Sql-обновление PHP for-loop не работает при использовании mysqli_query (), но оператор echo'd проходит - PullRequest
0 голосов
/ 20 февраля 2019

В файле процесса я делаю несколько запросов mysqli_query для загрузки нескольких наборов информации в базу данных (разные таблицы).Первый mysqli_query отправляет и работает отлично, но остальные не работают.Я не уверен, где есть ошибка в моем синтаксисе или больше проблемы с кодом PHP, так как я использую цикл для получения нескольких обновлений.В комментариях я добавил, для чего предназначен код, и если он работает или нет

   //at the top declaring the sql queries
   $sql_up_awarder = '';
   $sql_up_history  = '';
   $sql_up_bike  = '';
   $sql_up_social  = '';
   $sql_up_compete  = '';

   //connect to server
   require('conn.php');
   //sqlprevent 
   require('sqlprevent');

  //main table SQL statement that works
  $sql_update = sprintf("UPDATE influencers SET inf_name = %s,inf_email = %s,inf_dob = %s,inf_mobile = %s,inf_location = %s WHERE inf_id = $vid;",
      escapestring($vconncvnl, $vName, 'text'),
      escapestring($vconncvnl, $vEmail, 'text'),
      escapestring($vconncvnl, $vdob, 'text'),
      escapestring($vconncvnl, $vphone, 'text'),
      escapestring($vconncvnl, $vlocation, 'text')
   );
   $result_insert = mysqli_query($vconncvnl, $sql_update);

   if ($vracehistory != '') {
      for($i = 0; $i <count($history); $i++){
         $historyid = $history[$i];
         $valuehistory = $vracehistory[$i];
         $valueresults = $results[$i];
         $sql_up_history .= sprintf("UPDATE inf_race_history SET race_history =%s,results = %s WHERE inf_id = " . "'". $vid . "'" . " AND race_id = '$historyid';". "<br>", escapestring($vconncvnl, $valuehistory,'text'),escapestring($vconncvnl, $valueresults ,'text'));
       }
    } else{
    $vracehistory = '';
    }
    $result_history = mysqli_query($vconncvnl, $sql_up_history);

, когда я повторяю $sql_up_history, он дает мне

UPDATE inf_race_history SET race_history ='51',results = '61' WHERE inf_id = 2 AND race_id = 2;
UPDATE inf_race_history SET race_history ='71',results = '81' WHERE inf_id = 2 AND race_id = 3;

, который при вводе вPHPMyAdmin работает, а затем обновляет таблицы, как есть

, однако, когда я отображаю $results_history, я ничего не получаю, когда пытаюсь использовать Mysqli_error($vconncvnl);, чтобы посмотреть, что из этого получится

У вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса, который можно использовать рядом с 'UPDATE inf_race_history SET race_history =' 71 ', results =' 81 'WHERE inf_id =' в строке 1

у меня естьпопытался изменить значения в операторе обновления так, чтобы его значения, такие как

Update 'inf_race_history'

, были в `marks, но это не имеет никакого значения


edit

по предложению Давида я удалил <br> из части обновления, а затем mysqli_error () изменился на

В синтаксисе SQL возникла ошибка;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с 'ОБНОВЛЕНИЕ inf_race_history SET race_history =' 71 ', результаты =' 81 'WHERE inf_id = 2 A' в строке 1

1 Ответ

0 голосов
/ 20 февраля 2019

Используйте mysqli_multi_query () вместо mysqli_query ().Рекомендуется для нескольких запросов, чтобы выполнить один или несколько запросов, которые объединяются точкой с запятой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...