如何显示记录未找到php

时间:2014-05-24 23:36:20

标签: php mysql sql html5

我使用这个表单询问用户的名字,并在底部查询从数据库中选择他们的信息,但是如果在数据库中找不到名称怎么能提醒用户可以将其包含在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>
}

使用不在数据库上的名称仅显示表标题

1 个答案:

答案 0 :(得分:1)

在您的代码中,您使用的dieexit相同,这将使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;
}