在 MySQL 查询中使用动态表名称
在 MySQL 中,使用动态生成的表名称执行 SQL 查询可能会导致错误。为了克服这个问题,我们可以利用准备好的语句,它提供了一种安全有效的方法来处理此类情况。
在提供的代码中:
SET @id := '47'; SET @table := @id+'_2013_2014_voucher'; SELECT * FROM @table; Delete FROM @table where>
发生错误是因为 MySQL 不在查询中直接将“@table”识别为有效的表名。
为了解决这个问题,我们可以使用准备好的语句根据表名动态构造查询。下面的代码演示了如何实现这一点:
SET @id := '47'; SET @table := concat(@id,'_2013_2014_voucher'); set @qry1:= concat('select * from ',@table); prepare stmt from @qry1 ; execute stmt ;
在 MySQL 中,“concat”函数用于字符串连接。我们使用它在预备语句“@qry1”中构造表名。
创建预备语句后,我们可以使用“execute stmt”命令执行它。这种方法使我们能够动态生成表名并执行查询,而不会遇到语法错误。
以上是如何在 MySQL 中使用动态生成的表名执行 SQL 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!