2017-10-17 18 views
0

作成したMySQLデータベースに顧客を追加しようとしています。 誰かがオンラインストアのアイテムを注文すると、顧客はデータベースに追加されます(重複したくない)。ここに私のPHPコード:MYSQLデータベースに存在しない場合は挿入してください

$sqlInsert = "INSERT INTO Customers (FirstName, Address, Phone) 
VALUES (".$userName.",".$address.",".$phone.")"; 

if(mysqli_query($conn, $sqlInsert)) { 
    echo "new member registered successfully!"; 
} else { 
    echo "Error: " . $sqlInsert . "<br>" . $mysqli_error($conn); 
} 

私は、INSERT INTO ... WHERE NOT EXISTSのようなクエリを調べました。しかし私は私のケースの構文を理解していないし、それがうまくいくかどうかわからない。ここ は私のMYSQLの顧客テーブルのコードです:

CREATE TABLE IF NOT EXISTS Customers (
PersonID INT(11) NOT NULL AUTO_INCREMENT, 
Email VARCHAR(100), 
FirstName VARCHAR(100) NOT NULL, 
LastName VARCHAR(100), 
City VARCHAR(90), 
Zip INT(10), 
CustomerState VARCHAR(50), 
Address VARCHAR(200), 
Country VARCHAR(20), 
Phone VARCHAR(50) NOT NULL, 
PRIMARY KEY (PersonID) 
); 
+1

SQLインジェクションを防ぐ準備文について学ぶ – Jens

+0

一意の値は何ですか?名前は一意ではありません。それは電話番号ですか? – BRjava

答えて

5
INSERT INTO Customers (FirstName, Address, Phone) 
SELECT * FROM (SELECT '$firstName', '$address', '$phone') AS tmp 
WHERE NOT EXISTS (
    SELECT FirstName from Customers WHERE FirstName= '$firstName' 
) LIMIT 1; 

これは、最初の名前に基づいて、あなたはチェックのために、すべてのこれらの列を使用することができ、私は一致する列が電子メールであるべきと仮定しなくなり、あなたがそれを使用することができます。

私はちょうどアイデアを得るためにあなたのためのクエリ内のパラメータを追加しました、SQLバインディングを避けるためにパラメータバインディングを使用してください。

OR

select * from customers where .... // 

は、結果セットのサイズを取得し、すでに行があることを意味 size > 0あれば、それを挿入しないでください。

MySQL: Insert record if not exists in tableから取得したSQL文。

+0

Nice説明@Danyal – Nawin

+0

ありがとう:) @Nawin –

0

挿入する前に選択クエリを試して、行を確認してください... Mysqli Preparedステートメントを使用してみてください。私はあなたの方法でこのコードを実行します...

<?php 
    $sqlselect = "SELECT * FROM Customers WHERE FirstName = ".$userName." AND Address = ".$address." AND Phone = ".$phone; 
    $exqry = mysqli_query($conn, $sqlselect); 
    $cnt = count($exqry); 
    if($cnt == 0){ 
     $sqlInsert = "INSERT INTO Customers (FirstName, Address, Phone) 
     VALUES (".$userName.",".$address.",".$phone.")"; 

     if(mysqli_query($conn, $sqlInsert)) { 
     echo "new member registered successfully!"; 
     } else { 
     echo "Error: " . $sqlInsert . "<br>" . $mysqli_error($conn); 
     } 
    }else{ 
echo "Member already in table."; 
//do your update or other stuff. 
} 
    ?> 
関連する問題