我使用这个表单询问用户的名字,并在底部查询从数据库中选择他们的信息,但是如果在数据库中找不到名称怎么能提醒用户可以将其包含在catch(PDOException)
说"Error name not found in database"
或类似的东西
if(!empty($_POST))
{
require ("connection.php");
$nombre = $_POST['nombre'];
$query = "SELECT nombre, ape FROM estudiantes WHERE nombre = '$nombre' ";
try
{
$stmt = $db->prepare($query);
$stmt->execute();
}
catch(PDOException $ex)
{
die("Error" . $ex->getMessage());
}
$rownombres = $stmt->fetchAll();
<table width="97%" cellpadding="5">
<tr>
<th align="left">nombre</th>
<th align="left">apellido</th>
</tr>
<?php foreach($rowstudent as $row): ?>
<tr>
<td><?php echo ' ' . htmlentities($row['nombre'], ENT_QUOTES, 'UTF-8') . ' ';?></td>
<th><?php echo ' ' . htmlentities($row['ape'], ENT_QUOTES, 'UTF-8') . ' ';?></th>
</tr>
<?php endforeach; ?>
</table>
}
else
{
<form action="index.php" method="post">
<input type="text" name="nombre" value="" placeholder="Nombre" />
<button type="submit" value="Submit">Submit</button>
</form>
}
使用不在数据库上的名称仅显示表标题
答案 0 :(得分:1)
在您的代码中,您使用的die
与exit
相同,这将使PHP停止执行。此时,发送给用户的是他们将看到的内容。
您可以将更多详细信息添加到输出中:
die("The something was not found in the database...<br>Error" . $ex->getMessage());
或者更好的是,将错误弹出到变量中,继续执行代码,然后使用该错误消息,以便代码的其余部分按预期执行:
$errMessage="Error" . $ex->getMessage();
// etc etc and error checking is done on the rest of the page.
编辑:基于评论记录:
$rownombres = $stmt->fetchAll();
检查这里有多少条记录。如果没有,则使用它来识别找不到用户。
$rownombres = $stmt->fetchAll();
if(!count($rownombres))
{
$errMessage="That user was not found in the database.";
}
//// somewhere down the page...
if(!empty($errMessage))
{
echo $errMessage;
}