PHP和SQL将不起作用


PHP and SQL wont work?

$sql = mysqli_query($db, "SELECT COUNT(ID) from bruker");
if (!$sql) {
    while ($row1 = mysqli_fetch_array($sql, MYSQL_NUM)); {
        echo $row1;
    }
} else {
    echo "Funker ikke";
}

无法让它工作,我得到的只是:否则"Funker ikke"。

1( 使用错误的 if 条件。如果查询返回 true,则插入 if 条件

2(使用MYSQL_NUM错误的回波数据。它返回数字数组

$sql = mysqli_query($db, "SELECT COUNT(ID) from bruker");      
if ($sql) {// if true
    while ($row1 = mysqli_fetch_array($sql, MYSQL_NUM)) {
        echo $row1['0'];//numeric array
    }
} else {
    echo "Funker ikke";
}    

根据以下评论更新

$sql = mysqli_query($db, "SELECT COUNT(ID) from bruker");
if ($sql) {
    $row1 = mysqli_fetch_array($sql, MYSQL_NUM);
    echo $row1['0']; //numeric array
} else {
    echo "Funker ikke";
}

阅读 http://php.net/manual/en/mysqli-result.fetch-array.php

你的代码是正确的,除了 if 条件中的 sql 前不签名。根据你的说法,如果你的sql查询是错误的,那么显示$row 1,否则如果它是正确的,那么"funker ikke"就会被打印出来。恰恰相反。 此代码有效:

 $sql = mysqli_query($db, "SELECT COUNT(ID) from bruker");      
 if ($sql) {
   // as the query can only return 1 row the while look is unnecessary
   //while ($row1 = mysqli_fetch_array($sql, MYSQL_NUM)) {
   $row = mysqli_fetch_array($sql, MYSQL_NUM)
   echo $row[0]; 
 } else {
   echo "Funker ikke";
 }

您的代码有两个错误。
首先,它应该是真实的条件,只有进入显示循环。但是你把条件说!$sql意味着 false 只能进入循环。因此,您应该将!$sql更改为 $sql .

此外,在While循环之后不应直接放置分号。

您尝试看到以下代码

$sql = mysqli_query($db, "SELECT COUNT(ID) from bruker");
if ($sql) {
    while ($row1 = mysqli_fetch_array($sql, MYSQL_NUM))
    {
        echo $row1[0]; 
    }
} 
else {
    echo "Funker ikke";
}

代码中存在一些错误

首先,你不需要 while 循环来处理单个结果,SELECT COUNT(( 只能返回一行。

其次,由于 SELECT 查询的mysqli_query()将返回 FALSE 或 mysqli_result 对象,因此最好按如下所示翻转 if 条件并专门测试 FALSE 而不是 TRUE。

第三,一个mysqli_fetch_array($sql, MYSQL_NUM)返回一个数组,你必须使用数组表示法来获取唯一的返回值,即 $row[0]

此外,当任何mysqli_函数失败时,它会留下一些非常有用的错误信息,因此,如果您不希望用户在代码上线时看到它们,请显示该信息或将其发送到应用程序错误文件。

$sql = mysqli_query($db, "SELECT COUNT(ID) from bruker");
if ($sql === FALSE) {
    echo "Funker ikke";
    echo mysqli_error($db);
    exit;
} else {
    $row = mysqli_fetch_array($sql, MYSQL_NUM);
    echo $row[0];
}