如何使用PHP检查MySQL中是否存在行

kit*_*ski 4 php mysql

我试图读取XML文件并将其与现有数据库中的字段进行比较.

如果XML文件中不存在数据库中的ID,则与Id对应的整行不再有效,将被删除.

为此,我在while语句中从头到尾读取XML的每一行.

作为第一步,我尝试进行简单的比较,如果在数据库中找到XML中不存在的Id,则回显.

我知道数据库中有一些ID不存在于XML中,但下面的代码没有显示它们.

我有三个问题,首先是如何显示从数据库中提取的Id,其次是为什么这段代码找不到XML中没有的任何ID?

最后一个问题是,我是以完全错误的方式解决这个问题,并且有更好的方法来做到这一点!

$sql_result = mysql_query("SELECT id FROM `list` WHERE id =  $id") or die(mysql_error());

if($sql_result)
{
// echo $id . " Id exists " .  $sql_result["id"] . "\n";
}
else
{
echo "Id no longer exists" . $id . "\n";
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*ski 5

您的代码找不到您的期望,因为即使找不到ID,$sql_result仍然保留一个TRUE值,因为查询成功.相反,检查是否myqsl_num_rows() > 0

if($mysql_num_rows($sql_result) > 0)
{
  // echo $id . " Id exists "\n";

  //Now, to print the id, you need to fetch it from `$sql_result`, 
  //which is just a resource at this point:
  $row = mysql_fetch_assoc($sql_result);
  echo $row['id'];
}
Run Code Online (Sandbox Code Playgroud)


She*_*hef 5

这是检查的正确方法:

$sql_result = mysql_query("SELECT `id` FROM `list` WHERE `id` =  ".intval($id,10)." LIMIT 0,1");

if(is_resource($sql_result) && mysql_num_rows($sql_result) > 0 ){
    $sql_result = mysql_fetch_assoc($sql_result);
    echo $id . " Id exists " .  $sql_result["id"] . "\n";
}
else{
    echo "Id no longer exists" . $id . "\n";
}
Run Code Online (Sandbox Code Playgroud)