【问题标题】:Cant figure out this mysql to mysqli change无法弄清楚这个 mysql 到 mysqli 的变化
【发布时间】:2014-01-25 17:08:52
【问题描述】:

您好,我仍在尝试更改为 mysqli,有时我可以让事情顺利进行。 我拥有的最大的东西是 mysqli_result,我尝试了其他人所做的,但似乎没有用。 下面是代码:

$result = mysqli_query($con, "SELECT referer FROM users WHERE userId = '$key'");
if(mysql_result($result, 0) != "" ){
    $referer = mysql_result($result, 0);
    $result = mysqli_query($con, "SELECT referer FROM users WHERE userId = $referer'");
    if(mysql_result($result, 0) != "" ){
        $result2 = mysqli_query($con, "SELECT refered FROM users WHERE userId = $referer'");
        $newRefs = mysql_result($result2, 0) + 1;
        mysqli_query($con, "UPDATE users SET refered = '$newRefs' WHERE userId = '$referer'");
        $result3 = mysqli_query($con, "SELECT userName FROM users WHERE userId = '$key'");
        $refered = mysql_result($result3, 0);
    }
}

我们将不胜感激。

亲切的问候 乍得

【问题讨论】:

    标签: php mysql mysqli


    【解决方案1】:

    您不能像这样混合使用 mysql_mysqli_ 函数。另外,mysql_result 是严肃的老派。 mysqli 中没有等价物(这是一件好事)。我切换到mysqli_fetch_assoc,它接受您的查询并返回一个以字段名称作为键的关联数组。为了统一起见,我将其全部保留为程序(我讨厌将 OOP 与程序混合)。我应该注意到,您的代码在编写时非常复杂(例如,$key 没有在任何地方定义)。最好避免重用像你一样命名的变量。我还强烈建议切换到全对象代码库。

    $result = mysqli_query($con, "SELECT referer FROM users WHERE userId = '$key'");
    if($row = mysqli_fetch_assoc($result)){
        $result2 = mysqli_query($con, "SELECT referer FROM users WHERE userId = '" . $row['referer'] . "'");
        if($row2 = mysqli_fetch_assoc($result2)){
            $result3 = mysqli_query($con, "SELECT refered FROM users WHERE userId = '" . $row2['referer'] . "'");
            $newRefs = mysqli_fetch_assoc($result3);
            mysqli_query($con, "UPDATE users SET refered = '" . $newRefs['refered'] . "' WHERE userId = '" . $row['referer'] . "'");
            $result4 = mysqli_query($con, "SELECT userName FROM users WHERE userId = '$key'");
            $refered = mysqli_fetch_assoc($result4);
        }
    }
    

    【讨论】:

    • 当我尝试该代码时,我收到此错误:警告:mysqli_fetch_assoc() 期望参数 1 为 mysqli_result,布尔值在 /home3/clfarmer/public_html/confirm.php 第 45 行给出;这是行 $newRefs = mysqli_fetch_assoc($result3);
    • 添加了缺少的i 和另一个导致查询失败的空格。立即尝试
    【解决方案2】:

    你不能使用mysql_result! 尝试这样做:

    $result = mysqli_query($con, "SELECT referer FROM users WHERE userId = '$key'");
    if( mysqli_num_rows($result, 0) ) {
        list($referer) = mysqli_fetch_row($result);
    ....
    

    你可以使用面向对象的风格:

    $Result = $Con->query("SELECT referer FROM users WHERE userId = '$key'");
    if( $Result->num_rows ) {
        list($referer) = $Result->fetch_row();
    

    【讨论】:

      【解决方案3】:

      如果你在切换的过程中,你应该直接去PDO,而不是mysqli。

      mysqli vs pdo - stackoverflow

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多