我试图读取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)
您的代码找不到您的期望,因为即使找不到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)
这是检查的正确方法:
$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)