mysql存储函数不能用于预处理语句(php)

时间:2013-11-01 18:05:06

标签: php mysql stored-procedures innodb

我正在尝试在innoDB中创建一个序列替换(因为auto_increment的行为与myisam中的行为不同)。所以我创建了一个名为 seq 的存储函数。我可以按如下方式使用它:

INSERT INTO a_table(id) VALUES(seq('seq_a_table'));

我的基于mysqli的数据库库自动使用预处理语句,因此我收到此错误:

This command is not supported in the prepared statement protocol yet 

MySQL版本:5.1.48(OSX雪豹)。

更新

哇,我感到愚蠢......我对这个错误感到很困惑,我错过了一个简单的事实,那就是它没有被这个声明抛出。我正在使用事务并忘记了我的查询功能自动将所有内容编译为语句,包括“START TRANSACTION”。 所以对于未来的深夜编码员 - 不要试图在声明中开始交易:)

1 个答案:

答案 0 :(得分:-1)

为什么不在这种情况下使用旧的mysql。类似的东西:

$con = mysql_connect("192.168.x.x","host","pass");
if (!$con) die('Could not connect: ' . mysql_error());
mysql_select_db("yourdb", $con) or die("cannot select DB");

mysql_query( "INSERT INTO a_table(id) VALUES(seq('seq_a_table'))" );