php - mysqli_query 给出空结果 php

标签 php mysql

我正在尝试查询数据库,但 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);

最佳答案

除非你在全局声明$numberit 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/

相关文章:

php - 如何获取我的表中的另一个表列?

具有 2 个值的 MySQL 表约束

mysql - 循环遍历列并分配 0/1 MySQL

php - 现金簿记录 库存系统

php - 在php中使用get可以发送多少个字符

sql - MySQL MyISAM 表性能......痛苦地,痛苦地慢

mysql - 我可以在不知道现有列名的情况下重命名 MySQL 列吗?

mysql - 在 BETWEEN 子句中使用 SQL 子查询获取日期

php - Apache2 没有获得正确的路径

php - jQuery Ajax更新MySQL数据库,但没有运行成功功能