【问题标题】:Problems with fetching data from a database从数据库中获取数据的问题
【发布时间】:2011-08-24 23:25:31
【问题描述】:

我当前的代码:

<?php
                if(require("connect.php"))
                {
                $result = $mysqli->query('SELECT title, description, portfolio FROM Portfolio;');
                while($o = $result->fetch_object()) 
                {
                $title=htmlspecialchars($o->title);
                $description=htmlspecialchars($o->description);
                $portfolio=htmlspecialchars($o->portfolio);

                echo <<<ARTBOX
                <div class="artbox">
                <div class="photocontainer">
                    <img src="$portfolio" alt="$title" />
                </div>
                <div class="artboxtitle">
                    $title
                </div>
                <div class="artboxdescription">
                    $description
                </div>
                <div class="artboxenquiry">
                    <img src="images/enquiry.png" alt="Make an Enquiry" href="#" />
                </div>
            </div>
ARTBOX;
}
                }
                else
                {
                    echo "An error occurred, please try again.";
                }
?>

返回错误:“致命错误:在...中的非对象上调用成员函数 fetch_object()”

谁能告诉我哪里出错了?

【问题讨论】:

  • 您的查询可能失败,导​​致mysqli_query 返回false。因此你的$resultfalse,你不能在false 上调用fetch_object()
  • 如果您的姓名拼写错误,请检查您的查询
  • 在调用成员函数之前检查if($result)
  • 刚刚意识到该表在开始时有一个资本,如“投资组合”而不是“投资组合”,简单但我无法拿起它。
  • 您应该使用约定来命名您的表。例如,您有一个名称和大小写完全相同的表和字段,这可能会导致很多混乱。可能使用复数形式的表名

标签: php database mysqli


【解决方案1】:

看看mysqli::query()的返回值。如果出现错误,它可以返回FALSE。所以$result 将是FALSEFALSE-&gt;fetch_object() 没有意义 - 它确实调用了非对象的成员函数。

为了调试,可以输出错误信息:

$result = $mysqli->query('SELECT title, description, portfolio FROM Portfolio;');
if (!$result) {
  die($mysqli->error);
}

【讨论】:

    猜你喜欢
    • 2013-04-17
    • 2011-11-16
    • 2019-11-12
    • 1970-01-01
    • 2014-11-03
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多