我在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
答案 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。现在,您有两种选择: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);
//方法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());