mysql — SQL Query каждый раз терпит неудачу … Переполнение стека

Я хочу вставить в базу данных цены, артикулы и ссылки из различных файлов 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 bymysqli_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 в файле).

Приветствую и спасибо!

0

Решение

Вы можете сделать как:

    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; покажет вам сколько записи было вставлено

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector