2017-09-16 21 views
1

我循環顯示一些數據以顯示在我的頁面上,然後將每個循環插入數據庫中的一行(針對PHP和MySQL的個人學習練習)。MySQL不會將循環中的最後一項插入到數據庫中

for循環運行5次(例如,有時它可能循環更多/更少),並且我能夠成功地爲前4個循環插入數據,但難以找出爲什麼最後一個循環贏得' t插入到數據庫中。

所有5個循環迭代顯示在我的頁面上,我不太確定爲什麼最後一個循環不會插入到數據庫中。

這是我for循環,包括MySQL代碼:

$artworksIterations = 1

count($artworksTitle[$x]) = 5

for ($x = 0; $x < $artworksIterations; $x++) { 
    for ($y = 0; $y < count($artworksTitle[$x]); $y++) { 
     $savedartworksTitle = $artworksTitle[$x][$y]; 
     echo "TITLE: " . $savedartworksTitle . "<br>"; 
     $savedartworksArtist = $artworksArtist[$x][$y]; 
     echo "ARTIST: " . $savedartworksArtist . "<br>"; 
     $savedartworksYear = $artworksYear[$x][$y]; 
     echo "YEAR: " . $savedartworksYear . "<br>"; 
     $savedartworksMedium = $artworksMedium[$x][$y]; 
     echo "MEDIUM: " . $savedartworksMedium . "<br>"; 
     $implodeGene = implode(", ", $artworksGene[$x][$y]); 
     echo "GENRES: " . $implodeGene; 
     $savedartworksDisplay = $artworksDisplay[$x][$y]; 
     echo "<br><img src='" . $savedartworksDisplay . "'><br>"; 
     echo "<br>----<br>"; 
     $sql = "INSERT INTO Artworks (title, artist, year, medium, display, genres) VALUES ('$savedartworksTitle', '$savedartworksArtist', '$savedartworksYear', '$savedartworksMedium', '$savedartworksDisplay', '$implodeGene');"; 
     mysqli_query($conn, $sql); 
    } // end of y 
} // end of x 

任何幫助深表感謝。謝謝:)

+0

顯示'回聲$ sql'的輸出。此外,嘗試在循環後提交更改。 –

+0

可能你有重複的數據嗎? – user2182349

+0

如果您複製了'PRIMARY KEY','INSERT INTO'將失敗。你能證實你的餐桌「Artwoks」有這樣的「PRIMARY KEY」,並且你的數據是唯一的嗎? –

回答

1

謝謝大家誰幫助解剖我的問題!

事實證明,僅僅是巧合,來自每次迭代的最後一個循環的數據包含一個撇號('),這就是爲什麼它們沒有插入數據庫(語法錯誤)的原因。

感謝Jacques指出我應該檢查錯誤,這是它通知我一個語法錯誤的地方(同樣,謝謝你在我的撇號問題中提到的jeff)。

爲了解決這個問題,我使用了mysqli_real_escape_string()功能將數據保存爲數據庫中的一個安全的格式(可能是我應該在第一時間做了,學習的經驗!)。

更新工作代碼:

for ($x = 0; $x < $artworksIterations; $x++) { 
    for ($y = 0; $y < count($artworksTitle[$x]); $y++) { 
     // display the information on the web page 
     echo "TITLE: " . $artworksTitle[$x][$y] . "<br>"; 
     echo "ARTIST: " . $artworksArtist[$x][$y] . "<br>"; 
     echo "YEAR: " . $artworksYear[$x][$y] . "<br>"; 
     echo "MEDIUM: " . $artworksMedium[$x][$y] . "<br>"; 
     echo "GENRES: " . implode(", ", $artworksGene[$x][$y]); 
     echo "<br><img src='" . $artworksDisplay[$x][$y] . "'><br>"; 

     // save data to MySQL safe format 
     $savedartworksTitle = mysqli_real_escape_string($conn, $artworksTitle[$x][$y]); 
     $savedartworksArtist = mysqli_real_escape_string($conn, $artworksArtist[$x][$y]); 
     $savedartworksYear = mysqli_real_escape_string($conn, $artworksYear[$x][$y]); 
     $savedartworksMedium = mysqli_real_escape_string($conn, $artworksMedium[$x][$y]); 
     $savedartworksDisplay = mysqli_real_escape_string($conn, $artworksDisplay[$x][$y]); 
     $implodeGene = mysqli_real_escape_string($conn, implode(", ", $artworksGene[$x][$y])); 

     // insert data into database 
     $sql = "INSERT INTO Artworks (title, artist, year, medium, display, genres) VALUES ('$savedartworksTitle', '$savedartworksArtist', '$savedartworksYear', '$savedartworksMedium', '$savedartworksDisplay', '$implodeGene');"; 
     if (mysqli_query($conn, $sql) === FALSE) { 
      printf("ERROR: %s\n", mysqli_error($conn)); 
     } 
     echo "<br>----<br>"; 
    } // end of y 
} // end of x 
+1

改爲使用參數化查詢 – Strawberry

相關問題