Ошибка «Не удалось получить mysqli» при вставке запроса в функцию

0

При попытке импортировать данные из текстового файла я получаю сообщение "Не удалось получить mysqli" при следующей функции. Однако функция вставки отлично работает в других местах. Данные из файла обрабатываются правильно, и запрос отлично работает при копировании и прошлом в PHPMyAdmin.

функция

1. $conn = mysqli_connect("localhost","xxxxx","xxxxx","xxxx") OR die("Error!!");
2. function insert ($query){
3.  global $conn;
4.  if (!$conn) {
5.          die("Connection failed: " . mysqli_connect_error());
6.  }
7.  if (mysqli_query($conn, $query)){
8.      $result = "<b>Inserted $query</b>\n<br />";
9.      return $result;
10. } else {
11.     echo "Error: ". $query . "<br />" . mysqli_error($conn);
12. }
13. 
14. mysqli_close($conn);
15. }

Запрос, который я пытаюсь вставить:

INSERT INTO movies VALUES( '2603', 'Miracle Season, The', 'The Miracle Season', '2019-04-01',
'2D', '9', '101', '10', 'PG', 'for some thematic elements.', '', 'Scope', '01:30:55' )

Я вызываю функцию через $ result = insert ($ query);

Ошибка "не удалось получить mysqli" находится в строке 7. Я также получаю ошибку в строке 11 и строке 14.

Как я уже сказал выше, функция отлично работает с другими скриптами, и запрос работает отлично, когда я пытаюсь запустить его вручную.

Еще одно примечание: вставленные элементы не содержат идентификатор автоматического инкремента, поскольку первое значение запроса уже является уникальным идентификатором из другой базы данных. Моя функция импорта проверяет идентификатор, чтобы убедиться, что он уже существует, и запускает запрос обновления или вставки в зависимости от того, существует ли строка.

  • 0
    Ваша вставка не загружается .. Каково фактическое сообщение об ошибке? Пожалуйста, покажите соответствующий код, который вызывает эту функцию.
  • 0
    Предупреждение: mysqli_query (): не удалось получить mysqli в C: \ Websites \ functions_mysqli.php в строке 62 функции вставки вызывается: $ result = insert ($ insert_query);
Показать ещё 1 комментарий
Теги:

1 ответ

0
Лучший ответ

Я подозреваю, что вы вызываете функцию несколько раз. Но он вызывает mysqli_close($conn) в конце, поэтому, когда вы пытаетесь использовать его при следующем получении ошибки, потому что $conn больше не может быть использован.

Избавьтесь от этой строки и закройте соединение, когда скрипт будет выполнен с использованием MySQL (или не беспокойтесь, он будет закрыт автоматически при завершении скрипта).

  • 0
    Скрипт, с которым я работаю, анализирует длинный список фильмов из текстового файла. Он использует цикл for для просмотра каждой строки в файле, анализирует фрагменты в различных значениях столбца, а затем либо обновляет, либо вставляет строку после определения, что она не существует. Ошибка происходит в нижней части файла после того, как он уже обновил несколько десятков заголовков. Моя функция обновления выглядит так же, как и функция вставки выше, за исключением вывода для результата обновления.
  • 0
    Не уверен, почему это происходит после нескольких десятков обновлений. Это должно произойти при втором обновлении, так как вы закрываете соединение после первого обновления.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню