2012-04-12 73 views
6

我有一个MySQLvariable执行MySQL查询存在变量

@query = CONCAT('INSERT INTO history VALUES (',1,',',50,',UTC_TIMESTAMP()'); 

我想执行中存在的变量插入语句。

+0

尝试准备好声明 – 2012-04-12 11:42:38

+0

请给我例 – Avinash 2012-04-12 11:45:10

+0

看到我的答案,我认为它会工作 – 2012-04-12 11:53:44

回答

12

必须使用PREPARE首先准备语句,然后使用EXECUTE

在这里看到:http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html

喜欢的东西:

SET @query = CONCAT("INSERT INTO history VALUES (",1,",",50,",UTC_TIMESTAMP()"); 

PREPARE stmt1 FROM @query; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 
+0

我得到了这个错误#1064 - 你的SQL语法错误;检查与您的MySQL服务器版本对应的手册,在第2行'EXECUTE stmt_name'附近使用正确的语法。 – Avinash 2012-04-12 11:46:48

+0

试试我的编辑,应该没问题。 – mattytommo 2012-04-12 11:51:52

+0

谢谢@mattytommo。 – Avinash 2012-04-12 11:59:31

2
Set @query = CONCAT("INSERT INTO history VALUES (",1,",",50,",UTC_TIMESTAMP()"); 

然后

PREPARE stmt_name FROM @query 

,并在最后

EXECUTE stmt_name 
-2

删除CONCAT(),它没有这样做,除了因为它试图连接具有别的字符串产生错误什么。

+0

它实际上是连接5个元素,它不会是任何错误=>你的答案是坏 - >不回答已经回答的问题 - 看看'新'部分,并显示你的技能:) – Toumash 2015-07-02 21:26:43

+0

不合逻辑的答案。 – 2018-03-04 01:52:18