Я хочу вставить в базу данных цены, артикулы и ссылки из различных файлов CSV. Для этого я перебираю каждый CSV-файл и складываю строку со значениями ($sql
). Но он не будет вставлен в мою базу данных …
Это пример того, как я складываю $sql
строка:
$sql = "INSERT INTO cron (sku, price, link) VALUES" . " \n";if((stripos($inputFilename, "bok24"))){
// Loop through each row creating a <row> node with the correct data
while (($row = fgetcsv($inputFile, 0, $delimiter)) !== false) {
if(($row[0] != null) || ($row[0] != "")){
$sql .= "(\"" . $row[0] . "\",\"" . $row[4] . "\",\"" . $row[20] . "\"),";
}
}
... other CSV files
Чтобы проверить, где ошибка, я печатаю $sql
строка в файл. Я печатаю строку в файл, прежде чем он получитs escaped by
mysqli_real_escape (…) `и послесловия …
$myfile = fopen("data/sql.txt", "a");
fwrite($myfile, $sql . "\n\n");
fclose($myfile);
$sql = substr($sql, 0, -1) . ";";
$sql = $GLOBALS["database"]->real_escape_string($sql);
if($GLOBALS["database"]->query($sql) === TRUE){
echo "Successfully transfered to database!\n";
}else{
echo "ERROR by transferring to database!\n";
}
$myfile = fopen("data/sql.txt", "a");
fwrite($myfile, $sql . "\n\n");
fclose($myfile);
В этом файле вы можете найти экранированный и не экранированный вариант. Но я не вижу своей ошибки … Может кто-нибудь помочь мне и сказать, где моя ошибка?
Здесь вы можете найти файл sql.txt (найдите \ n, чтобы перейти к следующей строке sql в файле).
Приветствую и спасибо!
Вы можете сделать как:
if((stripos($inputFilename, "bok24"))){
// Loop through each row creating a <row> node with the correct data
$counter_inserted = 0;
while (($row = fgetcsv($inputFile, 0, $delimiter)) !== false) {
if(($row[0] != null) || ($row[0] != "")){
$sql = "INSERT INTO cron (sku, price, link) VALUES" . " \n";
$sql .= "(\"" . $GLOBALS["database"]->real_escape_string($row[0]) . "\",\"" . $GLOBALS["database"]->real_escape_string($row[4]) . "\",\"" . $GLOBALS["database"]->real_escape_string($row[20]) . "\"),";
if($GLOBALS["database"]->query($sql)){
$counter_inserted++;
}
}
}
echo $counter_inserted;
покажет вам сколько записи было вставлено
Других решений пока нет …