2010-10-19 67 views
0

'附近使用正確的語法所以我不知道這裏的交易是什麼......下面的代碼產生代碼後面的mysql錯誤。錯誤:檢查手動MySQL服務器版本是否在'

$fcontents = file("inventory.csv"); 

for ($i = 1; $i < sizeof($fcontents); $i++) { 
    $line = trim($fcontents[$i]); 
    $arr = explode(',', $line); 
    $values = implode(',', $arr); 
    $values = str_replace('&', 'and', $values); 

    $sql = 'INSERT INTO inventory (dealerid, name, vin, stock, newused, year, ' . 
      'make, model, series, body, color, intcolor, price, retailprice, ' . 
      'miles, transmission, engine, restraint, certified, photourl, ' . 
      'comments, flag, options, citympg, hwympg) ' . 
      'VALUES mysql_real_escape_string(' . $values . ')'; 
    mysql_query($sql); 

    echo $sql.'<br><br>'; 
    if (mysql_error()) { 
     echo mysql_error() .'<br><br>'; 
    } 
} 

您的SQL語法錯誤;檢查對應於您的MySQL服務器版本的手冊,以使用正確的語法以使用'

RESOLVED !!!所以我想後的解決愚蠢,愚蠢的單引號,傾倒在mysql中的.csv文件時,雙引號毛刺......見下文:

$fcontents = file("http://pathtofile.com/inventory.csv"); for($i=1; $i < sizeof($fcontents); $i++) { $line = trim($fcontents[$i]); $arr = explode(",", $line); $arr = str_replace ("'","&#39;", $arr); $values = implode("','", $arr); $values = str_replace("\"',",'\'",', $values); $values = str_replace(",'\"",',"\'', $values); $values = str_replace("&", "and", $values); $sql = "INSERT INTO vehicles.inventory (dealerid,name,vin,stock,newused,year,make,model,series,body,color,intcolor,price,retailprice,miles,transmission,engine,restraint,certified,photourl,comments,flag,options,citympg,hwympg) VALUES ('".$values."')"; mysql_query($sql); 
+0

什麼是實際查詢? – 2010-10-19 22:36:02

回答

0

您的MySQL查詢PHP函數。

我不相信你可以移動功能的報價之外,但你通過所有值都具有循環:

即。

foreach($values as $key=>$value){ 
$values[$key] = mysql_real_escape_string($value); 
} 

添加該命令以轉義所有值,然後更改查詢以刪除PHP函數。

此外,你也必須用引號內爆,而不只是逗號。

+0

那麼上述建議擺脫了那個錯誤,但現在我得到了這個補丁錯誤:列數不匹配第1行的值計數 – Brandon 2010-10-19 23:04:08

+0

由於此頁面陳述(http://htmlfixit.com/cgi-tutes/tutorial_MySQL_Error_Invalid_Query_Column_Count_Does_Not_Match_Value_Count .php),錯誤是因爲您指定的列多於「VALUES」。確保在添加數組時添加括號。 – 2010-10-19 23:06:37

+0

好的...每天都會有這樣的事情發生在所有的開發者身上......我終於通過反覆試驗瞭解到了這一點。它總是最愚蠢,最傻瓜的東西。 RE:錯誤 - 列計數與第1行的值計數不匹配。問題是當我用''爆炸時,字段將''後面的'...看起來像','入口','進入「'我愛我的工作! :-) – Brandon 2010-10-19 23:09:11

1

explode()implode()字裏行間,你應該是mysql_real_escape_string()-在$arr中的每個值。該函數應該在PHP中執行,而不是發送給MySQL執行。

你可能已經打印出(或記錄)了你生成的SQL語句,你可能已經發現了這個問題。

0

mysql_real_escape_string()是一個PHP函數,但是當它出現在代碼中時,它仍然在字符串範圍內。

試試這個:

$sql = 'INSERT INTO inventory (dealerid, name, vin, stock, newused, year, make, model, series, body, color, intcolor, price, retailprice, miles, transmission, engine, restraint, certified, photourl, comments, flag, options, citympg, hwympg) VALUES (' . mysql_real_escape_string($values) .')'; 
相關問題