2010-12-15 3 views
1

Привет, у меня следующий вопрос:mysqli_multi_query терпит неудачу на нескольких вставок

При попытке выполнить несколько INSERT INTO запросов с помощью функции mysqli_multi_query, ни один из них не выполняются, и я получаю стандарт «У вас есть ошибка в синтаксисе 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); INSERT INTO production VALUE 'по строке 1

строка (210) «ВСТАВКА В ЗНАЧЕНИЯ ПРОДУКТА (120, 103, 10, 0, 0); ВСТАВКА В ЗНАЧЕНИЯ ПРОДУКТА (120, 107, 5, 1, 0); в производство значений (120, 106, 7, 2, 0); INSERT INTO производственных значений (120, 103, 20, 0, 1); "

BOOL (ложных)

Если вы хотите чтобы проверить это поведение самостоятельно, вот 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

Вы уверены, что разрывы строк разрешены между запросами? – 2010-12-15 15:08:14

+0

См. «Они находятся в одной строке, разделенной пробелом после точки с запятой».: В строке нет разрывов строк, я просто нарисовал ее для браузера. Предложение аджреала исправлено, кстати. – Beerdude26 2010-12-15 16:06:44

ответ

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

Вы должны удалить точку с запятой для последней записи.

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) 
+0

Нет кубиков, все равно получайте ту же ошибку. Спасибо за предложение, хотя :) – Beerdude26 2010-12-15 16:04:55

Смежные вопросы