使用sql语句中的变量设置列[重复]

问题描述 投票:-2回答:1

我试图用变量设置字段(列名)。

$field=$_POST['fields'];
$value=$_POST['valued'];
$stmt=$pdo->prepare('SELECT * FROM participants WHERE '+$field+' = ?');
$res=$stmt->execute([$value]);

SQL表包含诸如'Name','Email','Idnumber'的列。

'field'变量采用不同类型的列,例如Name,Email,Idnumber等,'value'变量采用该列的特定值。

一种可能的解决方案是使用带变量'field'的switch并键入与表中的列数相同的sql语句。但是我想用一个语句编写它。谁能建议任何可能的解决方案?

php mysql pdo
1个回答
-2
投票

您必须使用这样的PHP语法进行连接:

$field=$_POST['fields'];
$value=$_POST['valued'];
$stmt=$pdo->prepare('SELECT * FROM participants WHERE '.$field.' = ?');
$res=$stmt->execute([$value]);

我正在向您提供此代码,因此您知道您的错误是什么。您永远都不要这样写它。请阅读this。您可以使用准备好的语句来避免这种情况。但是请记住,如果您没有以正确的方式使用准备好的语句,那么您就不会避免SQL注入。您可以阅读有关准备好的语句here的更多信息。让我知道是否有任何不清楚的地方。

© www.soinside.com 2019 - 2024. All rights reserved.