引用这个主题:Display error message if value not found mysql ,
我试图了解实现它的正确方法是什么,我当前的代码显示的是数据库查询的结果,但是当我输入一些不在数据库中的值时,它只是不显示错误消息或任何 php 编码错误.
这是我的 PHP 代码:
error_reporting(E_ALL); ini_set('display_errors', 1);
require_once 'dbconnect.php';
$name = $_POST['name'];
try {
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT *
FROM customer
WHERE lname LIKE :name OR
fname LIKE :name OR
number LIKE :name";
$q = $conn->prepare($sql);
$q->execute(array('name' => $name));
$q->setFetchMode(PDO::FETCH_ASSOC);
} catch (PDOException $pe) {
die("Could not connect to the database $dbname :" . $pe->getMessage());
}
这是我的 html View :
<tbody>
<?php
$cs = $q->fetchAll();
if ( $cs === FALSE ) {
echo "The search of $name return no result";
} else {
foreach($cs as $r): ?>
<tr>
<td><a href="profile.php?name=<?php echo htmlspecialchars($r['slug']) ?>"><?php echo htmlspecialchars($r['fname']), ' ', htmlspecialchars($r['lname']) ?></a></td>
<td><?php echo htmlspecialchars($r['number']) ?></td>
<td><a href="profile.php?name=<?php echo htmlspecialchars($r['slug']) ?>">View Profile</a></td>
</tr>
<?php endforeach;
} ?>
</tbody>
请指教我哪里做错了?
最佳答案
从技术上讲,查询本身没有失败,所以 fetchAll() 不会返回 false。当您运行未返回任何结果的查询时,它将执行的操作是返回一个空数组。
在这种情况下,您可以将 if 语句更改为:if ($cs === false || empty($cs)) {
。或者,您可以使用 if (!$cs) {
允许 PHP 解释虚假值,如空数组。
关于php - 即使数据库中没有数据也不会显示错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25710406/