我有一個表單,提交了我正在爲另一個項目練習的食譜的步驟和配料。我已經將表單設置爲提交數組中的數據,但我無法正確地將PHP代碼插入到數據庫中。我在這裏粘貼了表單佈局。表單是作爲另一個PHP頁面的一部分出現的,當用戶輸入一個配方名稱來添加到數據庫時會調用該頁面。我想在這個表單上有10個單獨的步驟條目,如果我能弄清楚如何將它們正確地插入到數據庫中。如何使用數組將表單數據輸入到mysql數據庫中?
<form action="add_recipe2.php" method="post">
<fieldset>
<legend>Add a Recipe</legend>
<table>
<tr>
<td>Recipe Name:</td>
<td><input type="text" name="recipename" value="$recipename"></td>
</tr>
<tr>
<td>Step:</td>
<td><input type="text" name="recipe[0][step]" placeholder="1"></td>
<td>Ingredients:</td>
<td><input type="text" name="recipe[0][ingredients]" placeholder="Ingredients"></td>
</tr>
<tr>
<td>Step:</td>
<td><input type="text" name="recipe[1][step]" placeholder="2"></td>
<td>Ingredients:</td>
<td><input type="text" name="recipe[1][ingredients]" placeholder="Ingredients"></td>
</tr>
<tr>
<td>Step:</td>
<td><input type="text" name="recipe[2][step]" placeholder="3"></td>
<td>Ingredients:</td>
<td><input type="text" name="recipe[2][ingredients]" placeholder="Ingredients"></td>
</tr>
</table>
<button type="submit">Add a Recipe</button>
<button type="reset">Reset</button>
</fieldset>
</form>
這是將數據輸入數據庫的PHP。問題是當我只向數據庫添加兩條記錄時,最後一條記錄仍然插入,但它插入一條空行。我需要一種方法來只添加從窗體傳遞的數據,即使它只有一行。我已經研究了很長時間,這代表了我發現的答案之一。但是,當表單中沒有更多數據時,它仍然不會停止插入到數據庫中。
$recipename = $_REQUEST["recipename"];
$conn = mysql_connect("localhost","user","password") or die(mysql_error());
mysql_select_db("test");
foreach($_POST['recipe'] as $recipe) {
// Add to database
$sql1 = "INSERT INTO `recipes` (recipe, step, ingredients) VALUES ('".$_POST['recipename']."', '".$recipe['step']."', '".$recipe['ingredients']."')";
mysql_query($sql1, $conn) or die(mysql_error());
} //end foreach
我只是無法弄清楚這一點。我需要幫助。如果不是存在的表單條目的數量,我懷疑我必須有一種方法來告訴我實際發送了多少條記錄。
這應該工作,但它不會插入除食譜名稱之外的任何東西。我嘗試了一個var_dump來查看配方步驟是什麼,並且顯示爲0.表單僅發送步驟和配料的最後一個條目。我不知道如何克服這一點。 – attentionjay 2012-01-13 05:14:38
我通過重新載入所有內容,然後重新嘗試了一遍,現在似乎可以正常工作。當我第一次嘗試時,我不知道問題出在哪裏。真心謝謝你幫助我解決這個問題。 – attentionjay 2012-01-13 18:03:50
@ user1137742很高興認識它 - 很樂意幫助 – 2012-01-13 18:53:33