Mysqli结果总是返回0


Mysqli result always returns 0

嗨,我可以连接到我的数据库,但据说我有0行!我尝试了不同的方法来连接到我的数据库,但所有这些方法总是返回0行,因此它不会显示数据库中的任何数据。

$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
$sql = "SELECT * FROM keys";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Key: " . $row["key"]. " " . $row["used"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>
SELECT * FROM keys
              ^

KEYS保留项,因此您的查询无法执行,也不会返回任何数据,至少会对其进行转义。

最好的选择是将字段名称更改为非保留的名称。

有趣的注意事项

您的意思是,如果我的结果中有一些行,请向我显示这些行,但如果结果中没有行,则向我显示行数。简而言之,当查询失败时显示行数是毫无意义的!这将是显示数据库驱动程序返回的错误消息的好地方

keys在mysql中是reserved keyword,它必须作为在backtick中

$sql = "SELECT * FROM `keys`";

您的查询失败,得到0 result always

要检查查询中的错误,请使用

if (!$conn->query("Your_QUERY")) {
    printf("Errormessage: %s'n", $conn->error);
}

读取http://php.net/manual/en/mysqli.error.php

我认为您必须使用以下代码才能获得结果:-

$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM `keys`";
$result = mysqli_query($conn, $sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Key: " . $row["key"]. " " . $row["used"]. "<br>";
}
} else {
echo "0 results";
echo "Rows:". mysqli_num_rows($result);
}
$conn->close();