php if语句的奇怪问题

时间:2012-04-18 18:28:33

标签: php mysql if-statement

我想使用此页面来确定用户是更新了简报还是创建了新简报。它连接到数据库没有问题,并将更新,但我不能让它插入一个新的,因为它给了我这个错误:

  

错误:您的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);
?>

2 个答案:

答案 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'";