Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL列名中的PHP变量_Php_Mysql_Sql - Fatal编程技术网

SQL列名中的PHP变量

SQL列名中的PHP变量,php,mysql,sql,Php,Mysql,Sql,我需要用php编写一个SQL update语句,我的列名需要是一个变量。 我从jQuery ajax post方法中获得这些变量,并在PHP中使用它们: $variable = $_POST['variable']; $row = $_POST['row']; $field = $_POST['field']; 当我回显它们时,我会得到正确的值,例如: echo $variable; echo $row; echo $field; 我得到了——马丁斯,2岁,名字。在我的数据库中,有

我需要用php编写一个SQL update语句,我的列名需要是一个变量。 我从jQuery ajax post方法中获得这些变量,并在PHP中使用它们:

$variable = $_POST['variable']; 
$row = $_POST['row']; 
$field = $_POST['field'];  
当我回显它们时,我会得到正确的值,例如:

echo $variable; 
echo $row;
echo $field;
我得到了——马丁斯,2岁,名字。在我的数据库中,有一列名为-firstname。所以,我试着做这个陈述(我知道我需要使用准备好的陈述,但这是另一个问题)


如果我用name-firstname更改“.$field.”,则更新成功,因此$variable和$row定义正确,但我需要将此列名作为变量。我看过大约15篇文章,我试过每一个代码,但什么也没试过。这真的不可能吗?

您需要转义变量,这是给定上下文的一个基本示例

$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);

您需要转义变量,这是给定上下文的一个基本示例

$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);

转义您的输入变量,请不要再使用
mysql
函数,请使用
mysqli
PDO
1。不要使用mysql。他们已经被弃用了(而且已经有好几年了)。使用
mysqli
PDO
。其次,这段代码非常不安全。请,请,转义你的输入变量。将它们直接传递到语句中将为一种称为“SQL注入”的经典攻击打开大门。请转义您的输入变量,并且请不要再使用
mysqli\ucode>函数,使用
mysqli\ucode>或
PDO
1。不要使用mysql。他们已经被弃用了(而且已经有好几年了)。使用
mysqli
PDO
。其次,这段代码非常不安全。请,请,转义你的输入变量。将它们直接传递到语句中将为一种称为“SQL注入”的经典攻击打开大门。谢谢!这很有效!:)但为什么逃跑如此必要?我应该使用PDO吗?PDO有很多优点吗?@user3316619准备好的语句总是比将变量粘贴到查询中要好。请参阅。@H2Oooooo
mysql\u real\u escape\u string
是不够的,但是
mysqli\u real\u escape\u string
很好-因为它会根据您提供的连接进行逃逸-而
mysql\u
的变体则不会-PDO要好得多,但它与OP有很大的偏差谢谢!这很有效!:)但为什么逃跑如此必要?我应该使用PDO吗?PDO有很多优点吗?@user3316619准备好的语句总是比将变量粘贴到查询中要好。请参阅。@H2Oooooo
mysql\u real\u escape\u string
是不够的,但是
mysqli\u real\u escape\u string
是好的-因为它会针对您提供的连接进行转义-而
mysql\u
变体则不会-PDO要好得多,但它与OP有很大的偏差