我找到了一种在pdo查询中使用变量作为表名的方法。
但是,我想知道下面的代码是否安全。
function buildQuery($CheckInput)
{
switch($CheckInput) {
case $CheckInput == 'user':
$TableName = 'user';
break;
case $CheckInput == 'guest':
$TableName = 'guest';
break;
}
$sql = "SELECT * FROM $TableName";
return $sql;
}
该功能使用如下:
if (isset($_POST['DropDownChoice']) AND ($_POST['DropDownChoice'] == 'user' OR $_POST['DropDownChoice'] == 'guest')) {
$sql = buildQuery(htmlspecialchars($_POST['DropDownChoice']));
}
如果切换中$CheckInput
永远不为真,那么$TableName
将是未定义的
SQL查询会发生什么?
我发现的所有例子都没有使用默认情况,是否有原因?
答案 0 :(得分:0)
设置默认值以确保获取表名
function buildQuery($CheckInput)
{
switch($CheckInput)
{
case 'user':
$TableName = 'user';
break;
case 'guest':
$TableName = 'guest';
break;
default:
$TableName = 'guest';
}
$sql = "SELECT * FROM $TableName";
return $sql;
}