2012-12-26 31 views
0

所有項目我使用的一種形式,從亞馬遜檢索信息,然後將這些信息納入一個MySQLi的表。我的問題是,一些記錄插入完美,而其他人根本不會插入。這裏是插入到表的查詢(是的,我知道這是敞開的SQL注入,但我需要得到它正常工作之前,我讓網絡安全):問題越來越插入的MySQLi數據庫

$conn->query("INSERT INTO video (upc, title, manufacturer, rating, platform, weight, listed_price, release_date, asin, image) 
    VALUES ('$upc', '" . addslashes($amazonResult['Title']) . "', '" . addslashes($amazonResult['Author']) . "', '" . $amazonResult['Rating'] . "', 
     '" . $amazonResult['Platfrom'] . "', " . $amazonResult['Weight'] . "," . $amazonResult['ListPrice'] . ", 
     '" . $amazonResult['PublishDate'] . "', '$asin','" . addslashes($amazonResult['ImageURL']) . "')"); 

至於我能告訴沒有錯誤正在產生。 任何有關這個問題的幫助將不勝感激。

+0

其中一些消毒變量的可能有,這是造成查詢的完整性失敗轉義引號。它是貧民窟,但在所有'amazonResult'變量上加上'addslashes',看看它是否有效。如果不是,請檢查所有查詢並查看語法錯誤的位置。 – phpisuber01

+1

_「在使網頁安全之前需要正確地使其正常工作」_ ...您可以使其工作_by_使其成爲「網頁安全」。爲什麼'addslashes()'而不是'mysqli_real_escape_string()',或者更好的是一個準備好的語句? – Wiseguy

+0

'首先回顯您的查詢。你會得到什麼MySQL錯誤? – Geo

回答

1

是的,我知道這是敞開的SQL注入,但我需要得到它正常工作之前,我讓網絡安全

你這樣做是上下顛倒。
注入不過是格式不正確的代碼結果。
所以你插入問題最有可能是同一個來源。

因此,如果你正確地格式化你的代碼,你會打一次這兩個目標。

據我可以告訴有沒有產生錯誤。

你要問的mysqli他們。
運行您所有的疑問,至少這樣

$sql = "..." 
$conn->query($sql) or trigger_error($conn->error."[$sql]"); 

通知錯誤和問題的查詢。

+0

接受您的建議後,我能夠找出錯誤,即這兩個字段「。$ amazonResult ['Weight']。」,「。$ amazonResult ['ListPrice']。」,需要在它們前面。似乎現在工作完美。 – Jim