2015-07-30 5 views
-3

Я в настоящее время использую mysqli_multi_query() один раз, чтобы вставить и во второй раз для обновления. Я также попробовал оба из них в одном запросе и прошел в mysqli_multi_query(), но он все еще не работает. И я работаю над записью более 100, поэтому сколько строк я могу вставить за один раз.Использовать insert, update, delete в одном запросе с помощью mysqli_multi_query?

Вот запрос:

$qry1 .= "INSERT INTO productinfo(productName, productPrice, productSaleprice, productImage, productLink, productColor, productSize, categoryId, sourceProductId, sourceId)"; $qry1 .= 'VALUES ("'.$productname.'","'.$productprice.'","'.$productsaleprice.'","'.$productimage‌​.'","'.$productlink.'","'.$color.'","'.$size.'","'.$data2['categoryId'].'","'.$so‌​urcePid.'","'.$sourceId.'");'; 
+4

Пожалуйста, разместите запрос. –

+0

Включите свой код, все это без догадок. В руководстве 'Выполняет один или несколько запросов, которые объединены точкой с запятой.' – chris85

+0

Вы сделали RTFM? http://php.net/manual/en/mysqli.multi-query.php - «F» означает «Fabulous» здесь ;-) –

ответ

0

Вы можете сделать это с утверждением:

INSERT INTO <table_name> (<PK_name>, <field_name>,...) VALUES (<PK_value>, <field_value,...),(<field_value,...), (<field_value,...) 
ON DUPLICATE KEY UPDATE field_name = VALUES(<field_name>) 

Вы можете вставить более 100 строк одновременно с этим утверждением.

+0

Я думаю, что OP знает, как построить инструкцию insert. Вопросы касаются нескольких запросов в PHP. – chris85

0

Может быть, есть ограничение в вашем сервере MySQL, так что большие запросы будут терпеть неудачу:

Если вы получите сообщение об ошибке, как «Mysql Error (1153): Получил пакет больше, чем„max_allowed_packet“байт» вы должен проверить параметр «max_allowed_packet» в вашей конфигурации mysql.

Пожалуйста, проверьте следующий комментарий в РОУ mysqli_multi_query: http://php.net/manual/en/mysqli.multi-query.php#97354

0

Вы не должны использовать multi_query, если вы точно не знаете, что вы делаете.

В противном случае используйте обычные отдельные вызовы для запроса()/prepare()

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