1

我想使用此页面来确定用户是否更新了时事通讯或创建了新的时事通讯。它连接到数据库没有问题并且会更新,但我无法让它插入一个新的,因为它给了我这个错误:

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

2 回答 2

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 注入。切换到准备好的语句是最好的方法。

于 2012-04-18T18:31:49.650 回答
0

正确引用您的查询

$sql = "UPDATE newsletter SET title='".$title."', body='".$body."' WHERE newsletterId ='$id'";
于 2012-04-18T18:35:24.177 回答