我正在尝试使用 PHP 创建一个 SQL 查询,在该查询中它检查是否已经使用相同的日期和用户名提交/设置了一行。如果没有,它会插入一个新行。如果确实找到匹配项,则改为更新该行。
我可以很好地插入新行,但是当我使用预先存在的日期和名称时,我的任何日志中都没有收到错误,并且查询似乎运行没有任何问题。但是在检查数据库时,我注意到该行实际上没有设置 UPDATES。当我在 SQL 中手动运行更新命令时,它似乎工作正常。
没有日志/错误数据可以继续,我希望在这里得到一些建议。我敢肯定这里一定有我遗漏的东西。这是我目前正在使用的:
require_once 'db-conn.php';
$name = $_POST['name'];
$email = $_POST['email'];
$date = $_POST['date'];
$var1 = $_POST['var1'];
$var2 = $_POST['var2'];
$var3 = $_POST['var3'];
$var4 = $_POST['var4'];
$conn = db_connect ();
$sqlq = "SELECT * FROM tbl WHERE date = '$date' AND name = '$name'";
$nRows = $conn->query("$sqlq")->fetchColumn();
if ($nRows==0) {
try {
$sqli = "INSERT INTO tbl (name,email,date,var1,var2,var3,var4) VALUES (:name,:email,:date,:var1,:var2,:var3,:var4)";
$sql = $conn->prepare("$sqli");
$sql->execute(array(':name' => $name, ':email' => $email, ':date' => $date, ':var1' => $var1, ':var2' => $var2, ':var3' => $var3 ':var4' => $var4));
} catch(PDOException $e) {
die ('SQL Error');
}
}
else {
try {
$sqli = "UPDATE tbl SET email='$email', notes='$notes', var1='$var1', var2='$var2', var3='$var3' WHERE date='$date' AND name='$name'";
$sql = $conn->prepare("$sqli");
$sql->execute(array($name, $email, $date, $var1, $var2, $var3, $var4));
} catch(PDOException $e) {
die ('SQL Error');
}
}