我想使用此页面来确定用户是更新了时事通讯还是创建了新时事通讯。它连接到数据库没有问题并且会更新,但我无法让它插入一个新的,因为它给我这个错误:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
如果我删除 if 语句并强制它插入一条新记录,它将正常工作。
如有任何建议,我们将不胜感激,谢谢。
<?php
$server = "localhost";
$username = "user";
$password = "****";
$database = "test";
$con = mysql_connect($server, $username, $password);
$title = $_POST["title"];
$body = $_POST["body"];
$transaction = "Record Added";
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db($database, $con);
if(isset($_POST["id"]))
{
$sql = "INSERT INTO newsletter (date, title, body)
VALUES('1990-12-12', '$title', '$body')";
}
else
{
$id = $_POST["id"];
$transaction = "Record Updated";
$sql = "UPDATE newsletter SET title='".$title."', body='".$body."' WHERE newsletterId =".$id;
}
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo $transaction;
mysql_close($con);
?>
最佳答案
您的逻辑似乎有缺陷,如果发布了 ID,您尝试插入,而当没有发布 ID 时,您尝试更新:
if(isset($_POST["id"]))
{
$id = $_POST["id"];
$transaction = "Record Updated";
$sql = "UPDATE newsletter SET title='".$title."', body='".$body."' WHERE newsletterId =".$id;
}
else
{
$sql = "INSERT INTO newsletter (date, title, body)
VALUES('1990-12-12', '$title', '$body')";
}
这就是你的错误来源,你的 $id
是空的。
除此之外,您还应该研究一下 sql 注入(inject)。切换到准备好的语句是最好的方法。
关于php - php if 语句的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10215631/