如果在$ 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的任何行,我怎么能显示未找到的消息?
答案 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语句并清理输入。
希望这有帮助!