避免在数据库中重复记录

时间:2013-02-06 19:10:58

标签: php html mysql

// 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)是否正确?

1 个答案:

答案 0 :(得分:1)

查询可能由于某种原因失败了。这意味着$sql是一个布尔值FALSE。您尝试将FALSE传递给mysql_num_rows(),这也会失败,因为它希望获得结果句柄。这意味着mysql_num_rows()也返回一个布尔值FALSE。在PHP中,false == 0TRUE,因此您执行insert语句。

从不假设查询成功。 始终检查是否有失败。这意味着,作为最低限度,你有:

$result = mysql_query(...) or die(mysql_error());
                          ^^^^^^^^^^^^^^^^^^^^^^