PHP / MySQL:如果记录已存在(无需更新),如何 return 信息
PHP / MySQL: How to return info if record already exists (without update)
我正在使用下面的代码将新行插入到 MySQL 数据库中。
此查询存储在 PHP 文件 (ajax.php
) 中,输入值通过 jQuery 中的 Ajax 调用传递给此文件。
一切都按预期工作,但如果数据库中已有电子邮件,我想 return 向用户发送消息。
我知道如何使用 ON DUPLICATE KEY 更新数据库行,但是 谁能告诉我如何检查它并回显它是否已经存在[=25] =](即不更新它)?
(电子邮件是单个主键,因此我只需要检查此列。)
我的PHP:
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
if($conn->connect_error){
die("Connection failed: " . $conn->connect_error);
}
$email = $_POST["email"];
$dob = $_POST["dob"];
$sql = "INSERT INTO Users (email, dob) VALUES ('" . $email . "', '" . $dob . "')";
if ($conn->query($sql)){
echo 'DB Update successful';
}else{
echo 'DB Update failed';
}
$conn->close();
您只需要在插入前进行简单的 SELECT
调用。
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
if($conn->connect_error){
die("Connection failed: " . $conn->connect_error);
}
$email = $_POST["email"];
$dob = $_POST["dob"];
$sql = "SELECT email FROM Users WHERE email = " .$email;
$query = $conn->query($sql);
if (mysqli_num_rows($query) > 0){
echo "There exists an user with this email";
}
else {
$sql = "INSERT INTO Users (email, dob) VALUES ('" . $email . "', '" . $dob . "')";
if ($conn->query($sql)) {
echo 'DB Update successful';
}
else {
echo 'DB Update failed';
};
}
$conn->close();
简单的方法就是计算 table 中与您尝试存储的电子邮件相同的条目的出现次数。计数而不是 SELECTing 意味着它更快,并且只返回一个计数而不是一个完整的行,您必须然后查看或计算结果中的行。
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
if($conn->connect_error){
die("Connection failed: " . $conn->connect_error);
}
$stmt = $Conn->prepare("Select Count(email) as cnt FROM Users WHERE email = ?");
$stmt->bind_param('s', $_POST["email"]);
$stmt->execute();
$stmt->bind_result($cnt)
$stmt->close();
if ( $Cnt > 0 ) {
// its already there so do whatever you want in this case
} else {
$sql = "INSERT INTO Users (email, dob) VALUES (?,?)";
$stmt = $Conn->prepare($sql);
$stmt->bind_param('ss', $_POST["email"],$_POST["dob"]);
if ($stmt->execute(){
echo 'DB Update successful';
}else{
echo 'DB Update failed';
}
}
$conn->close();
我正在使用下面的代码将新行插入到 MySQL 数据库中。
此查询存储在 PHP 文件 (ajax.php
) 中,输入值通过 jQuery 中的 Ajax 调用传递给此文件。
一切都按预期工作,但如果数据库中已有电子邮件,我想 return 向用户发送消息。
我知道如何使用 ON DUPLICATE KEY 更新数据库行,但是 谁能告诉我如何检查它并回显它是否已经存在[=25] =](即不更新它)?
(电子邮件是单个主键,因此我只需要检查此列。)
我的PHP:
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
if($conn->connect_error){
die("Connection failed: " . $conn->connect_error);
}
$email = $_POST["email"];
$dob = $_POST["dob"];
$sql = "INSERT INTO Users (email, dob) VALUES ('" . $email . "', '" . $dob . "')";
if ($conn->query($sql)){
echo 'DB Update successful';
}else{
echo 'DB Update failed';
}
$conn->close();
您只需要在插入前进行简单的 SELECT
调用。
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
if($conn->connect_error){
die("Connection failed: " . $conn->connect_error);
}
$email = $_POST["email"];
$dob = $_POST["dob"];
$sql = "SELECT email FROM Users WHERE email = " .$email;
$query = $conn->query($sql);
if (mysqli_num_rows($query) > 0){
echo "There exists an user with this email";
}
else {
$sql = "INSERT INTO Users (email, dob) VALUES ('" . $email . "', '" . $dob . "')";
if ($conn->query($sql)) {
echo 'DB Update successful';
}
else {
echo 'DB Update failed';
};
}
$conn->close();
简单的方法就是计算 table 中与您尝试存储的电子邮件相同的条目的出现次数。计数而不是 SELECTing 意味着它更快,并且只返回一个计数而不是一个完整的行,您必须然后查看或计算结果中的行。
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
if($conn->connect_error){
die("Connection failed: " . $conn->connect_error);
}
$stmt = $Conn->prepare("Select Count(email) as cnt FROM Users WHERE email = ?");
$stmt->bind_param('s', $_POST["email"]);
$stmt->execute();
$stmt->bind_result($cnt)
$stmt->close();
if ( $Cnt > 0 ) {
// its already there so do whatever you want in this case
} else {
$sql = "INSERT INTO Users (email, dob) VALUES (?,?)";
$stmt = $Conn->prepare($sql);
$stmt->bind_param('ss', $_POST["email"],$_POST["dob"]);
if ($stmt->execute(){
echo 'DB Update successful';
}else{
echo 'DB Update failed';
}
}
$conn->close();