Mysqli结果总是返回0

时间:2016-04-29 08:59:30

标签: php mysqli

您好我可以连接到我的数据库,但它说我有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();
?>

3 个答案:

答案 0 :(得分:4)

SELECT * FROM keys
              ^

KEYS是一个 reserved term ,因此您的查询无法执行,也没有返回任何数据,至少是逃避它。

最佳选择是将您的字段名称更改为未保留的字段。

有趣的事情需要注意

您说我的结果中是否有某些行显示了这些行,但如果我的结果中没有行,则会显示行数。简而言之,在查询失败时显示行数是完全没有意义的!这将是显示数据库驱动程序返回的错误消息的好地方

答案 1 :(得分:3)

keys在mysql中是reserved keyword,必须以反引号

$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

答案 2 :(得分:1)

我认为您必须使用此代码获取结果: -

$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();