При попытке импортировать данные из текстового файла я получаю сообщение "Не удалось получить 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.
Как я уже сказал выше, функция отлично работает с другими скриптами, и запрос работает отлично, когда я пытаюсь запустить его вручную.
Еще одно примечание: вставленные элементы не содержат идентификатор автоматического инкремента, поскольку первое значение запроса уже является уникальным идентификатором из другой базы данных. Моя функция импорта проверяет идентификатор, чтобы убедиться, что он уже существует, и запускает запрос обновления или вставки в зависимости от того, существует ли строка.
Я подозреваю, что вы вызываете функцию несколько раз. Но он вызывает mysqli_close($conn)
в конце, поэтому, когда вы пытаетесь использовать его при следующем получении ошибки, потому что $conn
больше не может быть использован.
Избавьтесь от этой строки и закройте соединение, когда скрипт будет выполнен с использованием MySQL (или не беспокойтесь, он будет закрыт автоматически при завершении скрипта).