我试图询问数据库,但mysqli_query($dbc, $query)总是返回{"current_field":null,"field_count":null,"lengths":null,"num_rows":null,"type":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";
}
this回应"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中运行查询时,我得到了几行结果。
而且,函数调用时不会返回"no affected rows":
$result = getGames($dbc);
echo json_encode($result);
除非全局声明$number
,否则它在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);
}
我刚刚改变了你的mysqli_affected_rows($dbc)到mysqli_num_rows($result),并为我工作。mysqli_affected_rows($dbc)返回上次INSERT、UPDATE、REPLACE或DELETE查询所影响的行数
函数getGames (dbc) {
$query="SELECT * FROM games WHERE min_players <= ".$number."AND max_players>=".$number.";";
$result = mysqli_query($dbc, $query)或trigger_error(" query: $query' n
MySQL Error: ")。mysqli_error (dbc)美元);
if(mysqli_num_rows($result)) {
return $result;
} else {
return "no affected rows";
}
}