1
// 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!");

データベースに患者名が存在する場合でも、新しいレコードが挿入されるのはなぜですか?

正しいif (mysql_num_rows($sql) == 0)ですか?

4

1 に答える 1

1

何らかの理由でクエリが失敗した可能性があります。つまり$sql、ブール値の FALSE です。これを に渡そうとしますFALSEmysql_num_rows()、これも失敗します。これは、結果ハンドルを取得することを想定しているためです。つまり、 mysql_num_rows() も boolean を返しますFALSE。PHP ではfalse == 0isTRUEであるため、insert ステートメントを実行します。

クエリが成功したと想定しないでください。常に失敗をチェックしてください。つまり、最低限必要なものは次のとおりです。

$result = mysql_query(...) or die(mysql_error());
                          ^^^^^^^^^^^^^^^^^^^^^^
于 2013-02-06T19:17:38.010 に答える