首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >prepare语句的问题

prepare语句的问题
EN

Stack Overflow用户
提问于 2011-03-19 03:36:14
回答 2查看 213关注 0票数 2

我写了这个查询,它有错误,有什么问题吗?

代码语言:javascript
复制
prepare test from
'select * from ?';

问题出在哪里?

它的正确形式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-19 04:36:13

你不能把占位符放在你喜欢的任何地方。参数占位符只能出现在语句中通常需要表达式的位置。特别是,不能使用参数占位符参数化标识符或整个语句结构。这就是为什么你的尝试失败了。

Roland Bouman's blog -> MySQL 5: Prepared statement syntax and Dynamic SQL中可以找到更多关于MYSQL中的预准备语句和动态SQL的有用信息。

如果您的目标用途类似于:

代码语言:javascript
复制
prepare test
  from
    'select * from ?' ;
set @myt := 'myTable' ;
execute test
  using @myt ;

它根本不会起作用。但您可以使用以下命令绕过它:

代码语言:javascript
复制
set @myt := 'myTable'
set @qtext := concat('select * from ',@myt) ;
prepare test 
  from @qtext ;
execute test ;
票数 4
EN

Stack Overflow用户

发布于 2011-03-19 03:45:07

我从来没有尝试过将表名作为变量。我不确定这是不是允许的。尝试以下操作:

代码语言:javascript
复制
PREPARE test FROM "SELECT * FROM table_name WHERE column = ?";

这是一种暗箭,因为您没有提供错误消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5356983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档