SQL列名中的PHP变量

时间:2014-02-16 18:03:48

标签: php mysql sql

我需要在php中创建一个SQL更新语句,我的列名必须是一个变量。 我从jQuery ajax post方法获取这些变量,我在PHP中使用它们:

$variable = $_POST['variable']; 
$row = $_POST['row']; 
$field = $_POST['field'];  

当我回应它们时,我会得到正确的值,例如:

echo $variable; 
echo $row;
echo $field;

我得到 - 马丁,2,名字。在我的数据库中,我有列名称 - 名字。所以,我试着发表这个声明(我知道我需要使用预备声明,但这是另一个问题)

$sql = 'UPDATE ajax_example SET '.$field.'= "'.$variable.'" WHERE id = "'.$row.'"';
mysql_query($sql) or die (mysql_error());

如果我更改'。$ field。'使用name - firstname,然后UPDATE成功,所以$ variable和$ row被正确定义,但我需要这个列名作为变量。我已经看过大约15个帖子,我已经尝试了每个软管代码,但没有。这真的不可能吗?

1 个答案:

答案 0 :(得分:3)

你需要转义变量,这是一个给出你的背景的基本例子......

$conn = mysqli_connect(/* config */);
$sql = 'UPDATE ajax_example SET ' . mysqli_real_escape_string($conn, $field).'= "' . mysqli_real_escape_string($conn, $variable) . '" WHERE id = "' . mysqli_real_escape_string($conn, $row) . '"';
mysqli_query($conn, $sql);