致命错误:在第 7 行调用非对象上的成员函数 prepare()。我想不通,为啥会出现此错误?
Posted
技术标签:
【中文标题】致命错误:在第 7 行调用非对象上的成员函数 prepare()。我想不通,为啥会出现此错误?【英文标题】:Fatal error: Call to a member function prepare() on a non-object on line 7. I can't figure this out, why do I get this error?致命错误:在第 7 行调用非对象上的成员函数 prepare()。我想不通,为什么会出现此错误? 【发布时间】:2012-12-15 06:13:03 【问题描述】:连接成功 致命错误:在第 7 行对非对象调用成员函数 prepare()。为什么会出现此错误?这是论坛的开始。我用'if ($query = $db->prepare($sql))'来准备。
<?php
session_start();
$db = mysql_connect("localhost","root","","my_db") or die ("Could not connect to database.");
echo 'Connected Successfully';
$sql = "SELECT forum_id, forum_name FROM forum_tbl";
if ($query = $db->prepare($sql))
$query->bind_result($f_id, $f_name);
$query->execute();
$query->store_result();
else
echo $db->error;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Forum</title>
<meta/>
<style type="text/css">
</style>
</head>
<body>
<div class="container">
<div class="content">
<table align="center" >
<?php
if($query->num_rows !==0):
while($row = $query->fetch()):?>
<tr>
<td><a href="forum.php?id=<?php echo $f_id?>"><?php echo $f_name;?> </a></td>
</tr>
<?php endwhile; endif;?>
</table>
</div>
</div>
</body>
</html>
【问题讨论】:
错误告诉你。您试图在不是对象的东西上调用方法。mysql_connect()
返回一个资源标识符,而不是一个对象。
mysql_connect
和 $db->prepare()
你在开玩笑吗?
mysql
-extension 已过时,不再维护(现在有一段时间了......),它将在 5.5 中标记为已弃用。请改用PDO_MySQL
或MySQLi
。 php.net/en/mysql-connect
【参考方案1】:
变化:
$db = mysql_connect("localhost","root","","my_db") or die ("Could not connect to database.");
到
try
$db = new PDO(mysql:dbname=my_db;host=127.0.0.1, "root","");
catch (PDOException $e)
echo 'Connection failed: ' . $e->getMessage();
exit();
【讨论】:
【参考方案2】:您将 mysql_connect
与 PDO 混淆了。使用 PDO,您将获得一个用于查询的对象,而不是 mysql_connect
无论如何都已弃用!
所以你正在调用一个不是对象的方法。假设您有这样的常量(否则只需替换为正确的值)将您的代码更改为
$db = new PDO(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
【讨论】:
以上是关于致命错误:在第 7 行调用非对象上的成员函数 prepare()。我想不通,为啥会出现此错误?的主要内容,如果未能解决你的问题,请参考以下文章
PHP 致命错误:在第 45 行的 admin\includes\html\database.class.php 中的非对象上调用成员函数 prepare()
致命错误:对 SQL SERVER 2012 的非对象 XAMPP 上的成员函数 query() 调用