Call to a member function fetch_row() on a non-object的问题

zonas1991 2012-11-05 10:34:16
运行出错:Fatal error: Call to a member function fetch_row() on a non-object in E:\AppServ\www\exercitation\Show.php on line 30

<?PHP
$existRecord = False;
$objContent = new Content();
$results = $objContent->load_content_byPage($pageNo, $pageSize);
// 使用while语句显示所有$results中的留言数据
while($row = $results->fetch_row()) { //第30行
$existRecord = True;
?>


最后也有如果没数据输出了。
<?PHP
} // end of while
if(!$existRecord) {
?>
<tr>
<td width="148" height="16" align=center class="main">没有留言数据</td>
</tr>
<?PHP
} // end of if
echo("</table></center></div>");
} // end of function
?>

数据库连接是没问题的。数据也有手动插入了。
...全文
1076 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
一起混吧 2012-11-06
  • 打赏
  • 举报
回复
echo $sql ;//贴出结果
zonas1991 2012-11-06
  • 打赏
  • 举报
回复
引用 4 楼 jordan102 的回复:
$result = $this->conn->query($sql) or die($this->conn->error); //改成这样能不能看到错误信息
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
一起混吧 2012-11-06
  • 打赏
  • 举报
回复
$result = $this->conn->query($sql) or die($this->conn->error); //改成这样能不能看到错误信息
ayzen1988 2012-11-06
  • 打赏
  • 举报
回复
你这个数据库类是不是少了一个query()函数? 还是你粘贴少了?
function query($sql)
{
 return mysqli_query($this->con,$sql);
}
zonas1991 2012-11-05
  • 打赏
  • 举报
回复
<?PHP class Content { var $conn; public $ContId; // 留言ID号,主键 public $Subject; // 留言标题 public $Words; // 留言内容 public $UserName; // 留言人姓名 public $Face; // 脸谱图标文件名 public $Email; // 电子邮件 public $Homepage; // 主页 public $CreateTime; // 创建日期和时间 public $UpperId; // 上级留言ID,如果不是回帖,则UpperId = 0 function __construct() { // 连接数据库 $this->conn = mysqli_connect("localhost", "root", "110120", "book"); mysqli_query($this->conn, "SET NAMES gbk"); } function __destruct() { // 关闭连接 mysqli_close($this->conn); } // 获取留言的内容 function GetInfo($Id) { $sql = "SELECT * FROM Content WHERE ContId=" . $Id; $result = $this->conn->query($sql); if($row = $result->fetch_row()) { $this->ContId = $Id; $this->Subject = $row[1]; $this->Words = $row[2]; $this->UserName = $row[3]; $this->Face = $row[4]; $this->Email = $row[5]; $this->Homepage = $row[6]; $this->CreateTime = $row[7]; $this->UpperId = (int)$row[8]; } } // 返回表Content中的记录总数量 function GetRecordCount() { $sql = "SELECT COUNT(*) FROM Content"; $result = $this->conn->query($sql); if($row = $result->fetch_row()) Return (int)$row[0]; else Return 0; } // 插入新记录 function insert() { $sql = "INSERT INTO Content (Subject, Words, UserName, Face, Email, Homepage, CreateTime, UpperId) VALUES('" . $this->Subject . "', '" . $this->Words . "', '" . $this->UserName . "', '" . $this->Face . "', '" . $this->Email . "', '" . $this->Homepage . "', '" . $this->CreateTime . "', " . $this->UpperId . ")"; $this->conn->query($sql); } // 删除指定的留言记录 function delete($Id) { $sql = "DELETE FROM Content WHERE ContId=" . $Id . " OR UpperId=" . $Id; $this->conn->query($sql); } function load_content_byUpperid($uid) { $sql = "SELECT * FROM Content WHERE UpperId=" . $uid . " ORDER BY CreateTime DESC"; $result = $this->conn->query($sql); Return $result; } function load_content_byPage($pageNo, $pageSize) { $sql = "SELECT * FROM Content ORDER BY CreateTime DESC LIMIT " . ($pageNo-1) * $pageSize . "," . $pageSize; $result = $this->conn->query($sql); Return $result; } } ?>
zonas1991 2012-11-05
  • 打赏
  • 举报
回复
引用 1 楼 jordan102 的回复:
$results 不是一个资源集,初步怀疑数据库操作类没有传入函数。
不明白,我把数据库操作全贴出来吧
一起混吧 2012-11-05
  • 打赏
  • 举报
回复
$results 不是一个资源集,初步怀疑数据库操作类没有传入函数。
源码链接: https://pan.quark.cn/s/8ddf8a1c92f9 **libcurl用于获取大型文件**libcurl作为一个开源的C语言库,提供了一系列的API来处理与URL相关的任务,涵盖了HTTP、FTP、SMTP等多种网络协议的应用。在执行大型文件的下载操作时,libcurl展现出卓越的性能表现和高度的灵活性,能够高效地管理大文件传输过程,有效预防内存溢出及其他潜在问题。**libcurl的基础操作**libcurl的基础应用包括以下几个环节:1. **初始化**:需要借助`curl_global_init()`函数来启动libcurl的工作环境。2. **建立会话句柄**:通过`curl_easy_init()`函数创建一个会话句柄,该句柄将用于后续所有的操作流程。3. **配置选项**:运用`curl_easy_setopt()`函数来设定多种参数,例如目标URL、超时时间、重试次数以及数据写入的回调函数等。4. **执行请求**:调用`curl_easy_perform()`函数来实施下载操作。5. **释放资源**:使用`curl_easy_cleanup()`函数来释放已经占用的资源。**获取大型文件时的重要设置**1. **数据写入回调函数**:在处理大型文件下载时,通常不希望一次性将整个文件载入内存。可以配置`CURLOPT_WRITEFUNCTION`选项,指定一个回调函数来处理接收到的数据片段,这样libcurl在接收到数据时会调用该函数,使得我们可以按需将数据写入文件或缓冲区。2. **缓冲策略**:可以设定缓冲区的大小(比如,通过`CURLOPT_BUFFERSIZE`),来控制每次接收数据的数量,从而优化内存...

21,890

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧