0

このサイトに投稿されたこのトピックに対してさまざまな解決策が提供されていることを知っており、それらの解決策のいくつかを確認 (および使用) しました。それにもかかわらず、以下のコードが機能しない理由がわかりません。おそらく、私が php および sql プログラミングの初心者であるためです ;-(

このコードは、テーブル (persons) に 3 つのフィールド (FirstName、LastName、Age) を持つレコードを追加することになっていますが、レコードがまだ存在しない場合のみです。したがって、既存の FirstName および Lastname フィールドのチェックが実行されます。ただし、既存のレコードの場合、if ステートメントの条件は依然として true のように見え、既存のレコードのコピーがデータベースに挿入されます。何が恋しいですか?

助けてくれてありがとう。

                    //check whether item does not exist in database
        $query ="SELECT FirstName,LastName FROM persons
        WHERE FirstName='$data[1]' AND LastName='$data[2]'";
        $result = mysql_query($query);
        if($result && mysql_num_rows($result) > 0) 
        {
            echo " <br> record exist";
        }
        else
        {   
        $theage = (int)$data[3]; //! for conversion of integer values
                $sql="INSERT INTO persons (FirstName, LastName, Age)
                 VALUES ('$data[1]','$data[2]','$theage')";
        if (!mysqli_query($con,$sql))
            {
                die('Error: ' . mysqli_error($con));
            }
        }
4

4 に答える 4

2

{}クエリで配列値を使用する必要があります

$query ="SELECT FirstName,LastName FROM persons
WHERE FirstName='{$data[1]}' AND LastName='{$data[2]}'";

また、INSERTクエリが実行されmysqliSELECTクエリが実行されmysqlます。両方ではなく 1 つだけを使用し、以下のコードを で使用する必要がありますmysqli

$result = mysqli_query($con,$query);
if($result && mysqli_num_rows($result) > 0) 
{
    echo " <br> record exist";
}
于 2013-06-13T10:29:30.993 に答える
0

データベースの観点から、必要なフィールドに UNIQUE KEY を設定して Person テーブルのデザインを変更します。

    CREATE TABLE `Persons` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `FirstName` varchar(255) NOT NULL,
    `LastName` varchar(255) NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `unique_FirstName_LastName` (`FirstName`,`LastName`) USING BTREE
    )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

通常の挿入を行い、重複エラーを処理します

[Err] 1062 - Duplicate entry 'jk-kenneth' for key 'unique_FirstName_LastName'
于 2014-01-14T10:07:04.187 に答える
0

接続を確認してください 最初のクエリで mysql_query を使用しました

次に、挿入時に2番目のケースでmysqli_queryを使用します

于 2013-06-13T12:11:09.163 に答える