首页 > 后端开发 > php教程 > PDO 参数可以用于 SQL 查询中的表名或列名吗?

PDO 参数可以用于 SQL 查询中的表名或列名吗?

Linda Hamilton
发布: 2024-12-25 03:20:21
原创
852 人浏览过

Can PDO Parameters Be Used for Table or Column Names in SQL Queries?

PDO 参数:它们可以接受表名或列名作为输入吗?

尝试将表名作为参数包含在准备好的 PDO 中语句,如下面的代码片段所示,将导致failure:

$stmt = $dbh->prepare('SELECT * FROM :table WHERE 1');
if ($stmt->execute(array(':table' => 'users'))) {
    var_dump($stmt->fetchAll());
}
登录后复制

为什么这不可能?

PDO 参数适用于在查询执行期间动态分配的数据值。另一方面,表和列名称是数据库模式的静态元素,不适合参数化。

包含表名称的安全替代方案

安全插入将表名放入 SQL 查询中,建议手动过滤和清理数据。这可以通过将白名单 switch() 语句合并到动态执行查询的函数中来实现:

function buildQuery( $get_var )
{
    switch($get_var)
    {
        case 1:
            $tbl = 'users';
            break;
    }

    $sql = "SELECT * FROM $tbl";
}
登录后复制

通过设置特定情况并处理任何无效场景,查询将仅在允许的情况下执行表名。这种方法确保用户输入不会直接影响 SQL 查询,从而保持数据完整性。

以上是PDO 参数可以用于 SQL 查询中的表名或列名吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板