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