【问题标题】:Error in simple MySQL query简单 MySQL 查询中的错误
【发布时间】:2013-06-10 09:39:40
【问题描述】:

我正在我的数据库上执行查询。我想获取表主键的最大值。我的日志中出现空结果和错误:

“PHP 警告:mysql_fetch_object():提供的参数不是有效的 MySQL 结果资源”

这是我的代码:

$mysqli = new mysqli(MYSQL_HOSTNAME, 'xxx', 'xxx', MYSQL_DATABASE);
if (mysqli_connect_errno()) 
    exit();

$sql = "SELECT MAX(id) FROM `Invoice`";
//$sql = "SELECT id FROM `invoice`";
$res = mysqli_query($mysqli, $sql);

var_dump(get_object_vars($res));

if ($res) {
    $row = mysql_fetch_object($res);
    var_dump($row);
    //echo $row->MAX(id);    
}  else {
    printf("Could not retrieve records: %s\n", mysqli_error($mysqli));
}

mysqli_close($mysqli);

当我 var_dump 时,我得到 NULL 值。到目前为止,这是我尝试过的:(1)。我已经直接在 phpmyadmin 中执行了 SQL 查询。我得到一个列标题为“Max(id)”的结果 (2)。我试过使用 mysql_fetch_array()。我收到以下日志错误:

“PHP 警告:mysql_fetch_array() 期望参数 1 是资源,给定对象”

我做错了什么?

【问题讨论】:

    标签: php mysql phpmyadmin


    【解决方案1】:

    $row = mysql_fetch_object($res);

    应该是:

    $row = mysqli_fetch_object($res);

    您正在尝试获取尚未设置的 mysql 对象

    【讨论】:

    • 非常有帮助的答案。谢谢。
    【解决方案2】:

    mysql_ 为前缀的函数来自旧的ext/mysql 扩展,它与改进的MySQLi 扩展(其函数具有mysqli_ 前缀)完全分离(且不兼容)。您将两者混合,这是行不通的。

    【讨论】:

    • 如何引用结果变量。我的 var_dump() 给了我 { public $MAX(id) => string(1) "1" }
    猜你喜欢
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多