Php 对中的非对象调用成员函数prepare()

Php 对中的非对象调用成员函数prepare(),php,mysql,pdo,Php,Mysql,Pdo,我正在尝试在我的网站上创建搜索功能。它没有显示任何结果,我一直在得到对x行中非对象上的成员函数prepare的调用 我的functions.php文件中包含了PDO连接 应该是这样的: $sql = "SELECT * FROM entries WHERE name LIKE :searchq or description LIKE :searchq or content LIKE :searchq";

我正在尝试在我的网站上创建搜索功能。它没有显示任何结果,我一直在得到对x行中非对象上的成员函数prepare的调用

我的functions.php文件中包含了PDO连接

应该是这样的:

$sql = "SELECT * FROM entries 
          WHERE name LIKE :searchq or 
                description LIKE :searchq or 
                content LIKE :searchq";

global $conn;
$stmt = $conn->prepare($sql);

确保已包含db配置文件。

prepare是PDO连接对象的一种方法,而$conn变量不是。需要将其实例化为连接对象,如下所示:

$conn = new PDO('mysql:host=localhost;dbname=database', 'user', 'password');
或者,如果已经在全局范围内的某个位置执行了此操作,则只需在函数中声明:

global $conn;

这样做很好。该声明具有误导性。它只在执行脚本的范围内是全局的,不超越脚本的执行。所有这些对象都将在脚本执行结束时销毁。这与会议无关

$conn不存在于你的函数doSearch中,除非你指定了全局$conn,这一点在这里很多人都不赞成。我会在答案中建议它,然后被否决100次。我不知道$conn是在哪里定义的??将其作为参数发送到函数或作为类变量。。有道理是吗?为什么不赞成创建变量全局?
global $conn;