繁体   English   中英

mysqli_multi_query多次插入失败

[英]mysqli_multi_query fails on multiple inserts

问候,我遇到以下问题:

当我尝试使用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行插入生产价值”

string(210)“将插入值插入生产值(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 ;

我是否正在忽略某些东西,或者这仅仅是奇怪的行为?

我这样做是为了最大程度地减少出错的机会

INSERT INTO production VALUES (120,103,10,0,0), 
(120,107,5,1,0), (120,106,7,2,0), (120, 103,20,0,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 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM