使用$ wpdb get_results进行WordPress查询时出错

时间:2018-11-29 02:28:11

标签: php wordpress

我在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

2 个答案:

答案 0 :(得分: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。现在,您有两种选择:MySQLiPDO

此外,这是一个关于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);
  

//方法2

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));
}

答案 1 :(得分:0)

根据this,自PHP 5.5.0起不推荐使用mysql_error()。也许改为尝试error_log()(然后查看php错误日志)。

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