我想使用 name
变量对我的 SQL 表进行排序。
if (isset($_POST['name']))
{
$name = $_POST['name'];
}
我已经打印了变量,它是modelName
。现在我想使用字段 modelName
对表进行排序。
如果我使用此代码,它不起作用:
$statement = $pdo->query('SELECT `ID`, `modelName`, `datecreated` FROM `modeldb` ORDER BY "' . $name . '"');
但是如果我使用这段代码,它就会起作用:
$statement = $pdo->query('SELECT `ID`, `modelName`, `datecreated` FROM `modeldb` ORDER BY modelName');
我使用的变量是否错误?
最佳答案
欢迎来到编程,
您应该像下面一样回显您的 SQL 查询,以评估您的输入生成的查询类型。
echo 'SELECT ID、modelName、datecreated FROM modeldb ORDER BY "' . $name . '"'
您会发现根本不需要"
。
编程的一个规则是永远不要相信用户输入。在这里您将注入(inject)从 $_POST
收到的数据
所以你应该验证你的输入,如
$sortableColumns = ['id','modelname','datecreated']
if(in_array(strtolower($name),$sortableColumns)){
$statement = $pdo->query('SELECT ID, modelName, datecreated FROM modeldb ORDER BY ' . $name )
}else{
$statement = $pdo->query('SELECT ID, modelName, datecreated FROM modeldb ORDER BY id');
}
请告诉我您想要的任何其他指南。
关于mysql - 使用变量对MySQL表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59271819/