在数据库(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$'); //

我是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$'); //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应用程序仍在加载并继续搜索它。我只想停止,甚至更好,如果它给用户一个错误或公告。