此问题已经在这里有了答案:
我试图用变量设置字段(列名)。
$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语法进行连接:
$field=$_POST['fields'];
$value=$_POST['valued'];
$stmt=$pdo->prepare('SELECT * FROM participants WHERE '.$field.' = ?');
$res=$stmt->execute([$value]);
我正在向您提供此代码,因此您知道您的错误是什么。您永远都不要这样写它。请阅读this。您可以使用准备好的语句来避免这种情况。但是请记住,如果您没有以正确的方式使用准备好的语句,那么您就不会避免SQL注入。您可以阅读有关准备好的语句here的更多信息。让我知道是否有任何不清楚的地方。