Я хочу импортировать содержимое файла CSV в таблицу базы данных, я использую этот код, который работает в совершенстве при вставке в консоль phpmyadmin:
LOAD DATA LOCAL INFILE '/Applications/MAMP/htdocs/testApp/trips.csv' INTO TABLE trips FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS (type,startDate,endDate,steps,coordinates,distance)
Однако при использовании его в php-файле у меня возникает ошибка:
<?php
$host = "localhost"; //Your database host server
$db = "dbTest"; //Your database name
$user = "root"; //Your database user
$pass = "root"; //Your password
$connection = mysqli_connect($host, $user, $pass);
//Check to see if we can connect to the server
if (!$connection) {
die("Database server connection failed.");
die(mysqli_error($db));
} else {
//Attempt to select the database
$dbconnect = mysqli_select_db($connection, $db);
//Check to see if we could select the database
if (!$dbconnect) {
die("Unable to connect to the specified database!");
} else {
$sql = "LOAD DATA LOCAL INFILE '/Applications/MAMP/htdocs/testApp/trips.csv'
INTO TABLE trips
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\\n'
IGNORE 1 ROWS (type,startDate,endDate,steps,coordinates,distance)";
$result = mysql_query($sql, $connection);
if (mysql_affected_rows() == 1) {
$message = "The trip was successfully inserted!";
} else {
$message = "The trip insert failed";
$message .= mysql_error();
}
echo $message;
}
}
?>
=> The trip insert failed
Я уверен, что проблемы возникают из-за \
или любой другой персонаж, на которого я не могу нацелиться.
Спасибо за помощь .
РЕДАКТИРОВАТЬ : Вы смешиваете два плагина MYSQL и MYSQLi в одном и том же скрипте, ниже я сбросил оставшуюся часть вашего кода с помощью плагина mysqli, потому что ваша верхняя часть использует mysqli …
N.BТы не можешь этого сделать. Выберите только один API.
$result = mysqli_query($connection, $sql);
if (mysqli_affected_rows($connection) >= 1) {
$message = "The trip was successfully inserted!";
} else {
$message = "The trip insert failed";
$message .= mysqli_error($connection);
}
Вы перепутали плагины MySQL и MySQLi — вы пытаетесь соединиться с MySQLi, а затем выполнить запрос с MySQL. Вы не можете сделать это. Выбирать один API и использовать его последовательно.
Так:
mysql_query($sql) ---> $connection->query($sql)
mysql_affected_rows() ---> $result->affected_rows()
mysql_error() ---> $connection->error
В конечном счете, это не имеет ничего общего с LOAD DATA INFILE
и ты должен был попробовать это с основным SELECT
! И я рекомендую чтение документации для функций, которые вы используете.
Попробуйте переместить ваш файл trip.csv в datadir
— Вы можете найти его с помощью этой команды: SELECT @ @datadir