问候,我有以下问题:
当我尝试使用mysqli_multi_query函数执行多个INSERT INTO查询时,它们都没有被执行,我收到一个标准的“你的SQL语法有错误”错误,但是当我接受完全相同的字符串时,我传递给该函数并粘贴到PHPMyAdmin并执行它,它完美无缺!
以下是我尝试执行的查询:
INSERT INTO production VALUES( 120, 103, 10, 0, 0 );
INSERT INTO production VALUES( 120, 107, 5, 1, 0 );
INSERT INTO production VALUES( 120, 106, 7, 2, 0 );
INSERT INTO production VALUES( 120, 103, 20, 0, 1 );
它们在一个字符串中,在分号后用空格分隔。
以下是我在代码中所做的事情:
$querytext = $queries // Get all the queries
$query_result = mysqli_multi_query( $this->_connection, $querytext );
if( mysqli_errno($this->_connection) > 0)
echo mysqli_error($this->_connection);
var_dump( $querytext );
var_dump( $query_result );
执行此代码会导致:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'INSERT INTO production VALUES(120,107,5,1,0)附近使用正确的语法;在第1行插入生产VALUE'
string(210)“INSERT INTO production VALUES(120,103,10,0,0);插入生产价值(120,107,5,1,0);插入生产价值(120,106,7) ,2,0);插入生产价值(120,103,20,0,1);“
布尔(假)
如果您想自己测试此行为,请参阅production
表:
CREATE TABLE `production` (
`colonyID` INT NOT NULL ,
`resource_type_being_built` INT NOT NULL ,
`amount_requested` INT NOT NULL ,
`build_list_position` INT NOT NULL ,
`production_number` INT NOT NULL ,
INDEX ( `colonyID` )
) ENGINE = MYISAM ;
我是否忽视了某些事情,还是这种奇怪的行为?
答案 0 :(得分:2)
我会这样做,以尽量减少错误的机会
INSERT INTO production VALUES (120,103,10,0,0),
(120,107,5,1,0), (120,106,7,2,0), (120, 103,20,0,1);
答案 1 :(得分:1)
您应该删除最后一个条目的分号。
INSERT INTO production VALUES( 120, 103, 10, 0, 0 );
INSERT INTO production VALUES( 120, 107, 5, 1, 0 );
INSERT INTO production VALUES( 120, 106, 7, 2, 0 );
INSERT INTO production VALUES( 120, 103, 20, 0, 1 )