作者:尹琢抵 | 来源:互联网 | 2023-01-12 18:42
我正在尝试将客户添加到我创建的MySQL数据库中.每当有人在网上商店订购商品时,客户就会被添加到数据库中(我不想复制).这是我的PHP代码:
$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 . "
" . $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)
);
Danyal Sande..
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注入.
要么
select * from customers where .... //
获取结果集的大小,如果size > 0
这意味着已经有一行,那么不要插入它.
从MySQL获取的Sql语句:如果表中不存在则插入记录并进行修改.
1> Danyal Sande..:
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注入.
要么
select * from customers where .... //
获取结果集的大小,如果size > 0
这意味着已经有一行,那么不要插入它.
从MySQL获取的Sql语句:如果表中不存在则插入记录并进行修改.