Mysql查询似乎工作但仍然出错?

时间:2011-12-30 20:46:32

标签: php mysql arrays where

我正在运行以下内容,它似乎是从数组中提取数据,因为错误包含我查询的所有数据,所以我不知道为什么我收到错误:

<?php
$user = $_POST[cf_id];
$form = $_POST[uid];
$date = date("d-m-Y"); 
$query = mysql_query("UPDATE hqfjt_chronoforms_data_addupdatelead SET '".$form."' = '".$date."' WHERE cf_id = '".$user."' ")
or die(mysql_error());
?>

我得到的错误是:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   ''185cfb5654aacf3038e3f26491f227356b5d768f'= '30 -12-2011'附近''   第1行的cf_id = '32'

正如您所看到的那样,数据被拉入,所以不确定我的某处有语法错误?

4 个答案:

答案 0 :(得分:3)

如果`$form`是一列,请不要使用引号(')而应使用重音符(`)。 (所以把它变成'$form`)

答案 1 :(得分:0)

$ 10表示你的字符串中有一个撇号,并且没有费心逃避它,让你自己接受SQL注入攻击。

答案 2 :(得分:0)

试试这个:mysql_real_escape_string

<?php
$user = mysql_real_escape_string($_POST[cf_id]);
$form = mysql_real_escape_string($_POST[uid]);
$date = mysql_real_escape_string(date("d-m-Y")); 
$query = mysql_query("UPDATE hqfjt_chronoforms_data_addupdatelead SET '".$form."' = '".$date."' WHERE cf_id = '".$user."' ")
or die(mysql_error());
?>

答案 3 :(得分:0)

这里的问题是你正在调用的$ form被用作列名。由于您是从名为UID的post参数填充它,我假设这是不正确的。你可能想要的是更多的东西:

"UPDATE hqfjt_chronoforms_data_addupdatelead SET `date` = '".$date."' WHERE cf_id = '".$user."' and `uid` = " . $form;

我确信这不完全正确,但将UID用作列名是没有任何意义的。