我想使用此页面来确定用户是更新了简报还是创建了新简报。它连接到数据库没有问题,并将更新,但我不能让它插入一个新的,因为它给了我这个错误:
错误:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第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);
?>
答案 0 :(得分:3)
您的逻辑似乎存在缺陷,如果您发布了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注入。切换到准备好的陈述是最好的方法。
答案 1 :(得分:0)
正确引用您的查询
$sql = "UPDATE newsletter SET title='".$title."', body='".$body."' WHERE newsletterId ='$id'";