我正在尝试查询数据库,但 mysqli_query($dbc, $query) 总是返回 {"current_field":null,"field_count":null,"lengths":null,"num_rows":null, “类型”:空
我的代码中没有任何 var_dump。
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (mysqli_connect_errno()){
trigger_error ('Could not connect to MySql: ' . mysqli_connect_error());
echo "it had an error";
} else {
mysqli_set_charset($dbc, 'utf8');
echo "it connected";
}
这与“已连接”相呼应
function getGames($dbc){
$query="SELECT * FROM games WHERE min_players <= ".$number." AND max_players >=".$number.";";
$result = mysqli_query($dbc, $query) or trigger_error("Query: $query\ n<br />MySQL Error: " . mysqli_error($dbc));
if(mysqli_affected_rows($dbc)) {
return $result;
} else {
return "no affected rows";
}
}
当我在 phpMyAdmin 中运行查询时,我得到了几行结果。
此外,该函数在调用时不会返回“没有受影响的行”:
$result = getGames($dbc);
echo json_encode($result);
最佳答案
除非你在全局声明$number
,it won't be available in the scope of getGames
.你应该传入它:
function getGames($dbc, $number) {
// ...
此外,您可以输出您正在运行的确切 SQL
,以便您可以在 phpMyAdmin 中对其进行测试(这样您就可以验证是否正确传递了 $number
到你的功能):
echo $query;
最后,mysqli_affected_rows
不返回 SELECT
语句中的行数。尝试 mysqli_num_rows
相反:
$sql = sprintf('Your SELECT statement with %d number', $number);
echo $sql; // To visually verify the SQL is valid
$query = mysqli_query($dbc, $sql);
if (false !== $query) {
return mysqli_num_rows($query);
} else {
return mysqli_error($dbc);
}
关于php - mysqli_query 给出空结果 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23566930/