【问题标题】:PHP variable is not an mysqli objectPHP 变量不是 mysqli 对象
【发布时间】:2014-09-21 03:46:11
【问题描述】:

我有下一个代码(在 NetBeans 中编译)

$query = 'INSERT INTO grupos(nombre, descripcion)'
            . ' VALUES ("' . utf8_decode($_POST['name']) . '", "' . utf8_decode($_POST['desc']) . '")';
    $result = $con->query($query) or exit("Error: " . $con->errno . ": " . $con->error);
    if ($result->affected_rows > 0) {

为什么我得到这个:“试图获取非对象的属性” 如果当我做了一个 echo $result;显示“1”?

【问题讨论】:

    标签: php class variables object mysqli


    【解决方案1】:

    来自mysqli::query()的文档:

    对于成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询,mysqli_query() 将返回一个 mysqli_result 对象。对于其他成功的查询,mysqli_query() 将返回 TRUE。

    由于您的查询是INSERT,而不是SELECT,因此它不会返回mysqli_result,它只会返回TRUE。你应该使用$con->affected_rows 而不是$result->affected_rows

    【讨论】:

    • 所以只有在第一种情况下我应该使用 $result = $con->($query)...?还是有其他更好的方法?
    • 对,当您执行UPDATEINSERT 时,您不需要将值分配给变量。该值是真还是假,具体取决于是否存在错误,您已经在使用 or exit 进行测试。
    • 顺便说一句,在这种情况下,我们通常使用die() 而不是exit(),因此它会发送错误代码。
    • die()exit()有什么区别?
    • 糟糕,实际上没有区别。我想这只是一个约定,所以读者可以看出这是一个错误情况。
    猜你喜欢
    • 1970-01-01
    • 2012-09-25
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多