避免数据库中的重复记录


Avoid duplicated record in database

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

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

NEVER假设查询成功始终检查故障。这意味着,作为最低限度,你有:

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