0
我想從variuse CSV文件插入價格,sku和鏈接到數據庫。要做到這一點,我遍歷每個CSV文件,並與值($sql
)堆積一個字符串。但它不會插入到我的數據庫......SQL查詢每次失敗... PHP
這是我如何堆疊的$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);
在這個文件中,你可以找到逃脫,沒有逃脫變化。但我沒有看到我的錯誤...有人可以幫我,告訴我我的錯誤在哪裏?
Here you can find the sql.txt file(搜索\ n以獲取文件中的下一個sql字符串)。
問候和謝謝你!
理想的MySQL沒有一個單一的INSERT語句值上限。 但是,您可能正在達到** max_allowed_packet **的限制,默認情況下爲1MB。您可以嘗試更改MySql的max_allowed_packet大小限制,或者可以將插入語句拆分爲多個插入語句。 –
將其分解爲多個插入,每個插入100行,這對於您的設置在一個SQL語句中插入太大。 – Martin
爲什麼你需要單插入查詢?你可以在循環中插入數據? –