我有更新数据到数据库的问题 - 我正在获得0000-00-00 在输入字段中,我将数据写为"2010-08-10".对于插入,它可以正常工作,仅用于更新.
在将它正常工作也像日说,为更新这也日期不工作.
以上编码两个查询:
$rec_query = mysql_query ("INSERT INTO `" . $tb_best_ps . "` (id, name, date, author, www, image) VALUES ('','" . mysql_escape_string ($_POST ["name"]) . "','" . $_POST ["date"] . "','" . mysql_escape_string ($_POST ["author"]) . "','" . mysql_escape_string ($_POST ["www"]) . "','" . mysql_escape_string ($_POST ["image"]) . "')");
$query1 = mysql_query ("UPDATE `" . $tb_best_ps . "`
SET `name` = '" . mysql_escape_string ($_POST ["name"]) . "',
`date` = " . $_POST ["date"] . ",
`author` = '" . mysql_escape_string ($_POST ["author"]) . "',
`www` = '" . mysql_escape_string ($_POST ["www"]) . "',
`image` = '" . mysql_escape_string ($_POST ["image"]) . "'
WHERE `id` = '" . $_POST ["edit"] . "'");
Run Code Online (Sandbox Code Playgroud)
我在更新查询中使用echo时的输出:
UPDATE `swt_best_ps` SET `name` = 'Best Paper Award at ADAPTIVE 2014 for Paper XYZ', `date` = 2010-08-10, `author` = 'David Bowie', `www` = 'http://thinkmind.org/', `image` = 'http://randomweb.com/iaria2014.png' WHERE `id` = '1'
Run Code Online (Sandbox Code Playgroud)
你没有引用你的日期,所以如果你得到类似2014-04-08$ _POST值的东西,你实际上是在做
... date = 2014-04-08 ...
Run Code Online (Sandbox Code Playgroud)
这将被视为一个数学运算:两次减法,你最终会做
... date = 2002 ...
Run Code Online (Sandbox Code Playgroud)
由于您没有引用日期,也没有对它们进行转义,因此您既要插入错误的数据,又容易受到SQL注入攻击.进入查询字符串的任何外部数据必须正确转义和引用.
查询构建线应该是
"`date` = '" . mysql_real_escape_string($_POST['date']) . "'"
^---note the added quote ^---note the added quote
Run Code Online (Sandbox Code Playgroud)