// Check to see if p_name exists
$sql = mysql_query("SELECT patient_name FROM patient WHERE patient_name = '" . $p_name . "'");
if (mysql_num_rows($sql) == 0){
// patient database
mysql_query("INSERT INTO patient (patient_name)
VALUES ( '$p_name' )") or die (mysql_error());
}
else
die ("Patient name exist!");
为什么即使数据库中存在patient_name,它仍会插入新记录?
if (mysql_num_rows($sql) == 0)
是否正确?
答案 0 :(得分:1)
查询可能由于某种原因失败了。这意味着$sql
是一个布尔值FALSE。您尝试将FALSE
传递给mysql_num_rows()
,这也会失败,因为它希望获得结果句柄。这意味着mysql_num_rows()也返回一个布尔值FALSE
。在PHP中,false == 0
是TRUE
,因此您执行insert语句。
从不假设查询成功。 始终检查是否有失败。这意味着,作为最低限度,你有:
$result = mysql_query(...) or die(mysql_error());
^^^^^^^^^^^^^^^^^^^^^^