2011-12-30 48 views
0

我运行以下命令,它显示为错误包含了所有我所查询的数据从阵列中提取数据,所以林不知道为什么我收到一个错误:Mysql查询似乎正在工作,但仍然出现错误?

<?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' WHERE CF_ID ='在列32” 1

当你手动可以看到数据正在被拉入,所以不知道我在某处有语法错误吗?

+0

你可以提供一个运行查询的代码片断,或者正在构建查询的位置吗? – allingeek 2011-12-30 20:48:47

+0

你可以发布hqfjt_chronoforms_data_addupdatelead的表结构吗? – 2011-12-30 20:51:18

+0

发布您的查询plz,以便我们可以检查错误。对不起有关英文 – 2011-12-30 20:48:37

回答

0

10美元表示您的字符串中有一个撇号,并且不打扰它,让您自己打开SQL注入攻击。

3

如果`$form`是一列,请不要使用引号(')而是使用重音符号(`)。 (所以一定要吧``$form

+1

只是FYI:通常在编程的情况下,他们被称为反引号而不是严重的口音。 – animuson 2011-12-30 20:58:46

+0

是否也适用于$ user,因为它也是列,它等于列cf_id – 2011-12-30 21:00:09

+0

不,$ user不是列,而是该特定行的列的值。 \'cf_id \',但是,_is_是一列。 – 2011-12-30 21:08:46

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()); 
?> 
0

的这里的问题是,我们在调用什么$形式被用作列名。既然你从一个名为UID的post参数填充它,我假设这是不正确的。你可能想要的是沿着线的东西更多:

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

我敢肯定,这是不准确的,但它只是没有任何意义,使用UID作为列名。

相关问题