更新期间的日期字段输出

时间:2014-04-08 20:50:33

标签: php mysql

我将数据更新到数据库时遇到问题 - 我正在找到制造商。在输入字段中,我将数据写为" 2010-08-10"。对于插入,它可以正常工作,仅用于更新。

在插入时,它也适用于that等日期,对于更新,此日期也不起作用。

上面对两个查询进行编码:

$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"] . "'");

我在更新查询中使用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'

1 个答案:

答案 0 :(得分:5)

您没有引用日期,所以如果您在$ _POST值中获得2014-04-08之类的内容,那么您实际上是在做

... date = 2014-04-08 ...

这将被视为一个数学运算:两次减法,你最终做

... date = 2002 ...

由于您没有引用日期,也没有对它们进行转义,因此您既要插入错误数据又容易受到SQL注入攻击。进入查询字符串的任何外部数据必须正确转义和引用。

查询构建行应为

"`date` = '" . mysql_real_escape_string($_POST['date']) . "'"
          ^---note the added quote                         ^---note the added quote