我正在尝试读入一个XML文件,并将其与现有数据库中的字段进行比较。
如果数据库中的ID在XML文件中不存在,则与该Id对应的整行不再有效,并将被删除。
为此,我在while语句中从头到尾读取了XML的每一行。
作为第一步,我尝试做一个简单的比较,如果它在数据库中找到一个不存在于XML中的Id,则回显。
我知道数据库中有一些在XML中不存在的is,但是下面的代码没有显示它们。
我有三个问题,第一,我如何显示从数据库中提取的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";
}
发布于 2011-06-14 22:11:45
这是正确的检查方法:
$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";
}
发布于 2011-06-14 22:06:37
您的代码没有找到您期望的结果,因为即使可能找不到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'];
}
发布于 2011-06-14 22:06:32
您应该使用mysql_num_rows()检查返回的行数。否则,您只是简单地检查查询是否执行没有任何错误。
if($sql_result)
至
if(mysql_num_rows($sql_result))
https://stackoverflow.com/questions/6344779
复制相似问题