使用 $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