Попытка обновить несколько строк базы данных в одном запросе, не работает - PullRequest
0 голосов
/ 04 октября 2018

У меня есть php-скрипт, который хранит данные о совпадении (и другие данные) в базе данных.Ранее я выполнял его через xml-файл с foreach и сохранял / обновлял каждую запись 1 за один раз.

Поскольку при обновлении более 3000 записей соответствий, для обновления потребуется более 45 секунд.полный.Поэтому я пытаюсь сделать это, используя один запрос, а не тысячи отдельных запросов.

$updateQuery = "";
$data = simplexml_load_file('$url');

foreach($data->match as $match) {
    $matchId = intval($match->id);
    $homeTeamName = $match->homeTeamName;
    $homeTeamScore = intval($match->homeTeamScore);
    $awayTeamScore = intval($match->awayTeamScore);
    $awayTeamName = $match->awayTeamName;

    // Check if record exists
    $query = "SELECT `matchId` FROM `matches` WHERE `matchId` = " . $matchId;
    $result = mysqli_query($mysqli,$query); 
    if(mysqli_num_rows($result) == 1 ){
        $updateQuery .= "UPDATE `matches` 
                    SET
                    `homeTeamName`='" . $homeTeamName . "',
                    `homeTeamScore`=" . $homeTeamScore . ",
                    `awayTeamScore`=" . $awayTeamScore . ",
                    `awayTeamName`='" . $awayTeamName . "'
                    WHERE `matchId`=" . $matchId . "; ";
    } else {
        $sql_statement="INSERT INTO `matches` 
                (`matchId`, `homeTeamName`, `homeTeamScore`, `awayTeamScore`, `awayTeamName`) 
                VALUES 
                (" . $matchId . ",
                '" . $homeTeamName . "', 
                " . $homeTeamScore . ", 
                " . $awayTeamScore . ", 
                '" . $awayTeamName . "')";
        mysqli_query($mysqli,$sql_statement);
    }
}
mysqli_query($mysqli,$updateQuery);

Пожалуйста, игнорируйте два типа запросов (обновление / вставка), как только я получу обновление, я будуизменить запрос на вставку, чтобы он работал аналогично.

Я обнаружил, что при просмотре результата $ updateQuery я могу вручную выбрать его, поместить в запись phpmyadmin sql, и он работает, он обновляетсяthge записывает, поэтому создаваемый запрос не является проблемой (фрагмент ниже).Но когда я запускаю скрипт php, база данных не обновляется.

Фрагмент сгенерированного запроса: UPDATE matches SET homeTeamName = 'Manchester_United', homeTeamScore= 2, awayTeamScore = 1, awayTeamName = 'Leicester_City', ГДЕ matchId = 111981;ОБНОВЛЕНИЕ matches SET homeTeamName = 'AFC_Bournemouth', homeTeamScore = 2, awayTeamScore = 0, awayTeamName = 'Cardiff_City' WHERE matchId = 108933;

Чего мне не хватает?

...