2016-05-17 55 views
-1

如何使用php var与php mysql中的列名相同?如何使用php var与php mysql中的列名相同?

当访问该网站

www.example.com/test.php?column=member_no&id=5 

我会得到$_GET['column'] = member_no$_GET['id'] = 5

然后当我测试下面的代码,为什么数据未更新?

$sql = "UPDATE table SET '".mysql_real_escape_string($_GET['column'])."' = '0' WHERE id = '".mysql_real_escape_string($_GET['id'])."' "; 
$dbQuery = mysql_query($sql); 
+0

尝试此_ “UPDATE表SET \'” .mysql_real_escape_string($ _ GET [ '列'])。 “\'= '0' WHERE ID =“” .mysql_real_escape_string($ _ GET [ 'ID']) 。“'”_ –

+0

显示什么错误? – JYoThI

+0

@mongmongseesee,你的回答在你的帖子发布后等着你,但你没有反应过来,如果你不需要解决方案,那么为什么问这个问题,浪费我的时间。 –

回答

2

在PHP中使用MySQL字段名的都有自己的规矩,你不能使用'的申请名称,您需要使用`或留空。

$sql = "UPDATE table SET `".mysql_real_escape_string($_GET['column'])."` = '0' WHERE id = '".mysql_real_escape_string($_GET['id'])."'"; 
$dbQuery = mysql_query($sql); 

注:mysql_*折旧在上层PHP版本,并从PHP 7 *去除 ,所以请避免使用它们,并与mysqli_*或 PDO开始。

+0

请注意,'mysql_real_escape_string'不适用于*列名*的正确转义。顾名思义,它转义为***字符串语法***,而不是反引号分隔的列语法。底线:这很容易受到SQL注入的影响。 – deceze

+0

@deceze,请编辑我的答案并添加这些。 –