Я обновляю или вставляю несколько строк в таблицы базы данных, используя Mysqli и multi_query. Они отлично работают, когда я использую их на своем локальном сервере MAMP, но ломаются, когда я использую их онлайн. На удаленном сервере выполняются только три из четырех запросов...
Обе среды имеют PHP и mysql версии 5+ и включают «расширение PHP: mysqli». Единственная разница, которую я вижу, это версия phpMyAdmin. Удаленный сервер имеет 3.5.6, мой локальный сервер MAMP имеет 4.2.5. Может ли это иметь влияние?
Я, конечно, меняю пароли, и все переменные должны быть действительными, так как они работают локально.
Я в недоумении... Спасибо!
$mysqli = new mysqli("localhost", "root", "root", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
$sql = "INSERT INTO categories (id, name, descr) VALUES ('$id1', '$name1', '$descr1') ON DUPLICATE KEY UPDATE name='$name1', descr='$descr1';";
$sql.= "INSERT INTO categories (id, name, descr) VALUES ('$id2', '$name2', '$descr2') ON DUPLICATE KEY UPDATE name='$name2', descr='$descr2';";
$sql.= "INSERT INTO categories (id, name, descr) VALUES ('$id3', '$name3', '$descr3') ON DUPLICATE KEY UPDATE name='$name3', descr='$descr3';";
$sql.= "INSERT INTO categories (id, name, descr) VALUES ('$id4', '$name4', '$descr4') ON DUPLICATE KEY UPDATE name='$name4', descr='$descr4';";
if (!$mysqli->multi_query($sql)) {
echo "Multi query failed: (" . $mysqli->errno . ") " . $mysqli->error;
}else{
echo("Succes.");
}
$mysqli->close()
ОБНОВЛЕНИЕ: Замена запросов одним запросом действительно работает, но не очень выполнима во всех сценариях и требует много переписывания... Использование жестко запрограммированных переменных не помогает.
$sql2 = "INSERT INTO categories (id, name, descr) VALUES ('$id1', '$name1', '$descr1'), ('$id2', '$name2', '$descr2'), ('$id3', '$name3', '$descr3'),('$id4', '$name4', '$descr4')
ON DUPLICATE KEY UPDATE name=VALUES(name), descr=VALUES(descr)";
phpMyAdmin
— это просто «инструмент для администрирования MySQL через Интернет», он не требуется и не влияет на функцииmysql
илиphp
. - person t.niese   schedule 09.02.2015categories
и конечной$sql
, созданной на вашем пульте, это невозможно сказать. - person t.niese   schedule 09.02.2015<?php
. Например:<?php error_reporting(E_ALL); ini_set('display_errors', 1);
посмотрите, даст ли это что-нибудь. - person Funk Forty Niner   schedule 09.02.2015';";
, чтобы они читались как'";
. - person Funk Forty Niner   schedule 09.02.2015$sql = "INSERT INTO categories (person_ID) VALUES ('$newID');"; $sql.= "INSERT INTO categories (person_ID) VALUES ('$newID');";
- person Jorgos   schedule 09.02.2015