如何在$ wpdb中找不到行时显示错误消息?

时间:2017-04-30 05:15:15

标签: php mysql wordpress row

如果在$ wpdb中找到了预订ID,我想显示一条消息,如果在数据库的任何行中找不到预订ID,我想显示另一条消息。

所以我使用以下代码:

$booking_ID = $_POST["booking_ID"];
$sql = "SELECT * FROM bookingTBL WHERE booking_ID LIKE '$booking_ID'";
$result = $wpdb->get_results($sql) or die(mysql_error());
if (count($result) > 0){
    echo 'Booking ID <b>'.$booking_ID.'</b>` is found';
    }
else {
    echo 'We could not fint the booking ID <b>'.$booking_ID.'</b><br/>Please refine your booking ID';
}

如果找到包含预订ID的行,则会显示消息Booking ID **GHT65VF** is found,但如果找不到包含预订ID的行,则会显示空白。没有任何消息。

为什么?

如果没有输入预订ID的任何行,我怎么能显示未找到的消息?

1 个答案:

答案 0 :(得分:2)

首先,当$wpdb->get_results($sql)没有返回任何内容时,它会执行第二个块die(mysql_error()),这将显示致命错误。

  

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

如果您启用WP_DEBUG模式,则会出现错误,因此这就是您获得空白屏幕的原因。

其次,要获取错误日志,请参阅this answer

所以你的完整代码应该是这样的

global $wpdb;
$booking_ID = $_POST["booking_ID"];
$sql = "SELECT * FROM bookingTBL WHERE booking_ID LIKE '$booking_ID'";
$result = $wpdb->get_results($sql);
//checking error msg
if ($wpdb->last_error !== '') {
    $wpdb->print_error();
    die('-- code execution discontinued --');
}
if (count($result) > 0) {
    echo 'Booking ID <b>' . $booking_ID . '</b>` is found';
} else {
    echo 'We could not fint the booking ID <b>' . $booking_ID . '</b><br/>Please refine your booking ID';
}

请注意:您应该使用prepare语句并清理输入。

希望这有帮助!