PDO 变量是表名的一部分

法鲁克DZ

当使用 PDO 绑定来防止 SQL 注入时,我试图绑定一个变量,它是表名的一部分。

我的查询与此类似:

    select * from user_:id_user.kb_:id_kbase "."_frequencies"

这必须导致

    select * from user_1.kb_123_frequency

user_1.kb_123_frequency预期的表名在哪里但是,当参数被绑定时:

    $st->bindParam(':id_user', $id_user, PDO::PARAM_INT);
    $sth->bindParam(':id_kbase', $id_kbase, PDO::PARAM_INT);
    $sth->execute();

它无法绑定并引发以下错误:

发生异常。

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: :id_kbase

我相信这是因为我试图将“ kb_:id_kbase”与“ _frequencies连接起来,但它:kb_kbase是一个参数。

所以我的问题是:您能否将表名作为参数传递,如果可以,当参数是表名的一部分时如何进行绑定?

非常感谢您的帮助

巴特弗里德里希斯

准备好的语句不能那样工作。

最好(最安全)的方法是只接受一组特定的值,例如使用switch语句。

switch ($tbl) {
    case "baz":
    case "foo":
        $tbl = "bar".$tbl;
        break;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章