在数据库(PHP和Mysql)中找不到项时如何给出错误
我是PHP和mysql的新手。我被这个问题困住了。我想要的是,如果在数据库中找不到项,则打印一个错误 下面是我的代码:在数据库(PHP和Mysql)中找不到项时如何给出错误,php,mysql,search,Php,Mysql,Search,我是PHP和mysql的新手。我被这个问题困住了。我想要的是,如果在数据库中找不到项,则打印一个错误 下面是我的代码: $searchParam = '%' . $_GET['q'] . '%'; $moment = microtime(true); $stmt = $db->prepare('SELECT * FROM product WHERE (serial_number LIKE ? OR name LIKE ?) ORDER BY production_date D$'); //
$searchParam = '%' . $_GET['q'] . '%';
$moment = microtime(true);
$stmt = $db->prepare('SELECT * FROM product WHERE (serial_number LIKE ? OR name LIKE ?) ORDER BY production_date D$'); //fixed
$stmt->execute(array($searchParam, $searchParam));
$products = $stmt->fetchAll(PDO::FETCH_ASSOC);
$queryTime = microtime(true) - $moment;
$output = array(
'query_time' => $queryTime,
'products' => $products
);
die(json_encode($output));
非常感谢您的帮助。我不知道您到底想要实现什么,也不知道您是否在前端解析结果,但这是一个简单的解决方案:
$searchParam = '%' . $_GET['q'] . '%';
$moment = microtime(true);
$stmt = $db->prepare('SELECT * FROM product WHERE (serial_number LIKE ? OR name LIKE ?) ORDER BY production_date D$
$stmt->execute(array($searchParam, $searchParam));
$products = $stmt->fetchAll(PDO::FETCH_ASSOC);
$queryTime = microtime(true) - $moment;
if($products) {
$output = array(
'query_time' => $queryTime,
'products' => $products,
'success' => true
);
}
else {
$output = array(
'query_time' => $queryTime,
'error' => 'Some error message',
'success' => false
);
}
die(json_encode($output));
为了获得更好的答案,请提供一些关于如何处理来自php的响应以及为什么它是json格式的附加信息。您可以简单地计算数组$products中返回的元素数量
if ( count($products) == 0) {
echo 'No matches found';
}
这一切都是在检查查询是否首先成功之后发生的。如果查询失败,设置变量可能会失败,而此If语句将失败。但这很可能是检查select语句中是否未找到行的解决方案。试试这个
<?php
$searchParam = '%' . $_GET['q'] . '%';
$moment = microtime(true);
$stmt = $db->prepare('SELECT * FROM product WHERE (serial_number LIKE ? OR name LIKE ?) ORDER BY production_date D$'); //fixed
$stmt->execute(array($searchParam, $searchParam));
$number_of_rows = $stmt->fetchColumn();
if($number_of_rows > 0) {
$products = $stmt->fetchAll(PDO::FETCH_ASSOC);
$queryTime = microtime(true) - $moment;
$output = array(
'query_time' => $queryTime,
'products' => $products
);
} else {
$output = array(
'query_time' => $queryTime,
'products' => $products,
'success' => false,
'error_msg' => 'Product not found.',
);
}
die(json_encode($output));
?>
这意味着如果product=0,则可以显示错误消息,如“尚未找到产品”?我正在执行搜索功能。( ). 此时,当未找到项目时,web应用程序仍在加载并继续搜索它。我只想停止,甚至更好,如果它给用户一个错误或公告。