如何为MySQL数据库表中找不到的数据编写php代码?

如何为MySQL数据库表中找不到的数据编写php代码?,php,mysql,database,error-handling,Php,Mysql,Database,Error Handling,我很抱歉,mybe这是一个愚蠢的问题,但由于我是网络语言和php新手,我不知道如何解决这个问题 我有一个代码,从用户那里获取ID,然后连接到MySQL,从数据库表中获取ID号的数据,然后显示在网页上 但我想知道,若用户输入一个不在数据库表中的ID并显示一条未找到数据的消息,那个么我应该向该代码添加什么 这是我的密码: <?php //connect to the server $connect = mysql_connect ("localhost","Test","Test") ;

我很抱歉,mybe这是一个愚蠢的问题,但由于我是网络语言和php新手,我不知道如何解决这个问题

我有一个代码,从用户那里获取ID,然后连接到MySQL,从数据库表中获取ID号的数据,然后显示在网页上

但我想知道,若用户输入一个不在数据库表中的ID并显示一条未找到数据的消息,那个么我应该向该代码添加什么

这是我的密码:

<?php

//connect to the server
$connect = mysql_connect ("localhost","Test","Test") ;

//connection to the database
mysql_select_db ("Test") ;

//query the database
$ID = $_GET['Textbox'];
$query = mysql_query (" SELECT * FROM track WHERE Code = ('$ID') ");

//fetch the results / convert results into an array
$ID = $_GET['Textbox'];

WHILE($rows = mysql_fetch_array($query)) :

     $ID = 'ID';

  echo "<p style=\"font-color: #ff0000;\"> $ID </p>";


  endwhile;

?>

多谢各位

抱歉,这是一个很愚蠢的问题。

您应该使用PDO(这里有很棒的教程:)。这样,您可以更轻松地开发更安全的应用程序。您需要在将ID插入查询字符串之前准备好它,以避免任何用户对mysql查询的操作(称为sql注入,guide:)

问题的主要答案是,在得到结果后,检查结果中是否有行,如果没有结果,则数据库中没有这样的ID。如果使用PDO语句
$stmt->rowCount()


不使用mysql_*函数的另一个原因是:

不要使用去除润滑的
mysql_*api。使用
mysqli\u
pdo
。您应该查看num\u行。首先使用num_行对查询中的结果进行计数。如果为零,则显示警报(或其他内容),否则,显示来自用户的数据。您应该测试查询是否返回了任何结果,如果没有,那么数据库中就没有这样的id。另外,不要使用mysql功能,它很快就会被弃用,永远不要像这样向查询中插入用户输入。编辑:我想有人会在回答中解释它。@appl3r我测试了所有代码,它运行良好。让我这样解释。它就像一个跟踪系统。用户有一个特定的ID,其中包含一些信息,例如数据库中表的顺序。当用户输入ID时,信息将显示在数据库表的网页上。但我想添加一个php代码,如果用户输入了错误的ID,而不是数据库表中显示的ID,则会显示一条错误消息。我会将我的答案写为答案,如果您有问题,害怕不问。谢谢。这是一个非常好的答案,但我可以问你,请告诉我,我应该把你的代码放在我的php代码中的什么地方?你应该用这个替换你当前的代码,并修改它,以匹配你的偏好,比如数据库名称、用户名、密码、查询和
$id
变量(变量、名称、字符串或整数)。
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');

$stmt = $db->prepare("SELECT * FROM table WHERE Code=?");
$stmt->bindValue(1, $id, PDO::PARAM_INT); // or  PDO::PARAM_STR
$stmt->execute();

$row_count = $stmt->rowCount();

if ($row_count > 0) {
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
    //results are in $results
} else {
    // no result, no such an ID, return the error to the user here.
}