使用 $wpdb get_results 的 WordPress 查询出错 [重复]

Posted

技术标签:

【中文标题】使用 $wpdb get_results 的 WordPress 查询出错 [重复]【英文标题】:Error with WordPress query using $wpdb get_results [duplicate] 【发布时间】:2019-05-01 00:59:05 【问题描述】:

我在我的 WordPress 数据库中添加了一个标题为“titleofpost”的帖子。我尝试在 php 7 $wpdb get_results 中使用,但出现以下错误:

致命错误:未捕获错误:调用未定义函数 mysql_error()。

怎么了?任何帮助表示赞赏。

我使用下面的代码:

global $wpdb;
$leadTitle="titleofpost";
$sql = "SELECT * FROM $wpdb->posts WHERE post_title LIKE '%$leadTitle%'";
$post_if = $wpdb->get_results($sql) or die(mysql_error()); //here dies

【问题讨论】:

【参考方案1】:

你这个

global $wpdb;
$leadTitle="titleofpost";
$sql = "SELECT * FROM $wpdb->posts WHERE post_title LIKE '%$leadTitle%'";
$post_if = $wpdb->get_results($sql) or die(mysqli_error()); //here dies

mysql_* 函数已在 PHP 7 中删除。

您可能在 XAMPP 中安装了 PHP 7。您现在有两个选择:MySQLi 和 PDO。

此外,这里有一个关于 PDO 的不错的 wiki 页面。

使用 PDO 处理错误 PDO 有多种处理错误的方法。

T以下是 PDO 的三种错误模式。

第一个是 PDO::ERRMODE_SILENT。这很像 mysql_* 函数,在调用 PDO 方法后,您需要检查 PDO::errorCode 或 PDO::errorInfo 以查看它是否成功。

第二种错误模式是 PDO::ERRMODE_WARNING。除了也抛出 E_WARNING 消息之外,这几乎相同。

最终的错误模式是 PDO::ERRMODE_EXCEPTION。当发生错误时,这会引发 PDOException。这是我推荐的方法,并将在更多示例中使用它。

// You can set the error mode using the fourth options parameter on the constructor
$dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

// or you can use the setAttribute method to set the error mode on an existing connection
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//方法二

try 
    $dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
 catch (PDOException $e) 
    log_error("Failed to connect to database", $e->getMessage(), $e->getCode(), array('exception' => $e));

//方法3

try 
    $dbh->query("INVALID SQL");
 catch (PDOException $e) 
    log_error("Failed to run query", $e->getMessage(), $e->getCode(), array('exception' => $e));

【讨论】:

我在 Macintosh 上使用 php 7 我能做什么? 它说或死的地方(mysql_error() 你需要把它改成PDO 代码太长,无法在我的答案上编辑评论 所以这段代码 'die(mysql_error());'导致错误? 是的,你不能使用那条线【参考方案2】:

根据this,那么mysql_error() 自 PHP 5.5.0 起已被弃用。也许改用error_log()(然后查看php错误日志)。

可能是您的这部分代码导致错误:or die(mysql_error());

【讨论】:

以上是关于使用 $wpdb get_results 的 WordPress 查询出错 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress - get_results() - 如何知道是失败还是空?

Wordpress 数据库查询错误 Call to a member function get_results() on null

Wordpres,查询最新帖子

如何从 PHP 中的 Wordpress get_results 将数据添加到 OBJECT

在 Wordpress Sql Query 中解析结果

Wordpress获取类别标签