MySQL更新命令出错。 (在PHP中)

时间:2009-06-24 13:17:10

标签: php mysql

大家早上好,

我在php中使用更新命令来更新mysql中的数据。这是我的代码:

$sql=mysql_query("UPDATE blpublication SET JournalName = '$_POST[journal]', AcceptanceDate = '$_POST[acceptancedate]', PublishedDate = '$_POST[publisheddate]', Comment = '$_POST[comment]'
WHERE JobNo = '$_POST[jobno]'");

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "record Updated";

它会更新字段但是,它会给我以下错误。我无法弄清楚为什么我会收到此错误。 “错误:您的SQL语法中有错误;请查看与您的MySQL服务器版本对应的手册,以便在第1行使用”1“附近的正确语法”

你能帮助我吗

最佳

Zeeshan

8 个答案:

答案 0 :(得分:3)

您能告诉我们$sql的确切输出是什么吗?顺便说一句,那里有 BIG 安全漏洞。你应该总是转义查询输入,即:

$journal = mysql_real_escape_string($_POST['journal']);
$acceptance_date = mysql_real_escape_string($_POST['acceptancedate']);
$publish_date = mysql_real_escape_string($_POST['publisheddate']);
$comment = mysql_real_escape_string($_POST['comment']);
$job_no = intval($_POST['jobno']); // assuming jobNo is a number
$sql = <<<END
UPDATE blpublication
SET JournalName = '$journal',
AcceptanceDate = '$acceptance_date',
PublishedDate = '$publish_date',
Comment = '$comment'
WHERE JobNo = $jobno
END;
mysql_query($sql);
if (mysql_error()) {
  die("Error executing query '$sql': " . mysql_error());
}
echo "record Updated";

答案 1 :(得分:2)

我会首先清理你的输入。这可能会导致一些非常讨厌的错误,例如您正在经历的内容和恶意攻击。查看SQL Injection

答案 2 :(得分:2)

我认为问题是你正在运行mysql_query两次。它第一次工作并返回1(true),您指定给$ sql。然后再次调用mysql_query,传递$ sql(等于1)。当然“1”不是有效的SQL查询,因此您会收到语法错误。

我完全同意你必须消毒这些投入!

答案 3 :(得分:1)

与以下post类似,我相信当你有任何对象或数组语法时,你需要放入大括号。

SET JournalName = '${_POST[journal]}'

编辑:是的,正如其他人指出你冒着sql注入的风险。

答案 4 :(得分:1)

首先,您的代码很容易SQL injection,转义您的POST值:

$journal = mysql_real_escape_string($_POST['journal']);

要实际调试查询,我们需要查询本身。在实际执行查询之前添加一个echo()语句并发布结果,POST值可能包含一些意外值。

答案 5 :(得分:1)

除了明显的注入可能性之外,您的一般UPDATE语法看起来没问题,但您需要输出$ sql。你的一个变量可能有一个引用或其他一些问题....

答案 6 :(得分:1)

查看代码中的SQL UPDATE语句,有一件事在我身上跳了出来。表名是blpublication,你可能错过了't',即tblpublication

此外,您应该真正清理您的输入,否则您将成为SQL injection attack的受害者。

答案 7 :(得分:0)

尝试连接$ _POST值。我不确定是否可以在不引用密钥的情况下包括它们?

$sql= mysql_real_escape_string("UPDATE blpublication SET JournalName = '".$_POST['journal']."', AcceptanceDate = '".$_POST['acceptancedate']."', PublishedDate = '".$_POST['publisheddate']."', Comment = '".$_POST['comment']."'
WHERE JobNo = '".$_POST['jobno']."'");
$result = mysql_query($sql);

注意:mysql_ *命令已弃用。您应该切换到mysqli_*