准备好的语句的函数

发布于 2024-10-19 17:09:30 字数 331 浏览 1 评论 0原文

是否有一种安全的方法在准备好的语句中使用传递给函数的变量(变量不是用户定义的)作为表名?

即:

function select( $table )
{
    blah blah

    $stmt->prepare( "SELECT * FROM $table WHERE id = ?" );

    blah blah
}

我生成了一个包含所有可用表名的函数,如果其中一个与 $table 匹配,它将返回表名。我认为这就是所谓的硬编码。但我不知道这对我有帮助吗?基本上我正在尝试使用准备好的语句创建一个用于插入/更新/选择的函数。

Is there a safe way use variables that are passed to a function (variables are not user defined) for table names in a prepared statement?

ie:

function select( $table )
{
    blah blah

    $stmt->prepare( "SELECT * FROM $table WHERE id = ?" );

    blah blah
}

I have generated a function that has all available table names and if one of them matches $table, it returns the table name. I think it's called hard-coding. But I don't know is this is helping me. Basically i'm trying to create a function for insert/update/select using prepared statements.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一瞬间的火花 2024-10-26 17:09:30

如果您在查询中使用 $table 之前将其与已知的表名称列表进行比较,那么这应该是非常安全的。下一个最好的办法是将表名称包装在刻度线中,并删除传入的 $table 变量值中的任何刻度线。

If you compare $table to a known list of table names before using it in a query, that should be pretty safe. The next-best thing would be to wrap the table name in tick marks and remove any tick marks in the incoming $table variable value.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文