准备好的语句的函数
是否有一种安全的方法在准备好的语句中使用传递给函数的变量(变量不是用户定义的)作为表名?
即:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您在查询中使用
$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.