2012-07-18 24 views
-2
<form method="post" action="insert.php" > 

<p>Name:<input type="text" name="food_name" id="food_name"/> 

<p>Price:<input type="text" name="food_price" id="food_price"/> 

<?php 

$query = "SELECT * FROM category"; 

// Execute it, or return the error message if there's a problem. 

$result = mysql_query($query) or die(mysql_error()); 

//$options = ""; 

$dropdown = "<select name='cat_name'>"; 

while($row = mysql_fetch_assoc($result)) 

{ 

$dropdown .= "\r\n<option value='{$row['cat_id']}'>{$row['cat_name']}</option>"; 

} 

$dropdown .= "\r\n</select>"; 

echo $dropdown; 

?> 

<input type="submit" value="Insert Price" /> 

<a href="show.php">Cancel 

</form> 

//這是形式插入在PHP的MySQL,從下拉菜單中取出數據和文本框數據不是在我的表where子句

X ============= ========= X

if(isset($_POST['cat_name'])!= '') 

{ 

$cat_id=$_POST['cat_name']; 

$food_name=$_POST['food_name']; 

$foodPrice=$_POST['food_price']; 


$query="INSERT INTO food (food_name,food_price) values($food_name,$foodPrice) where 

cat_id= $cat_id"; 

if(mysql_query($query)) 

{ 

echo "new item added"; 

} 

else 

{ 

die(mysql_error());} 

} 

?> 

這是錯誤 「您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的「正確的語法手冊其中cat_id = 4'在第1行「

它應該通過選擇類別插入食物名稱和價格

+1

我聞到SQL注入where子句。 – ThiefMaster 2012-07-19 11:46:33

回答

3

您不需要插入的where子句,如果您需要設置id,然後將其作爲一個參數,如果它是一個自動增量,那麼就不要包含它。

$query="INSERT INTO food (food_name,food_price,cat_id) values(\"$food_name\",$foodPrice,$cat_id)"; 

看看使用mysqli或PDO,雖然當涉及到sql查詢時,不要使用mysql_ *版本。你應該看看使用準備好的語句,這將有助於防止SQL注入。

+0

$ query =「INSERT INTO food(food_name,food_price)values($ food_name,$ foodPrice)AND cat_id = $ cat_id」; 我可以像這樣使用它嗎? – user1533946 2012-07-18 09:45:20

+0

um否,如果'cat_id'是食品表中的一列,並且它不是自動增加列,那麼您可以這樣做:$ query =「INSERT INTO food(food_name,food_price,cat_id)values($ food_name,$ foodPrice,$ cat_id)'。你爲什麼要放** cat_id ** seperatley?是否有我們不理解的嚴肅原因?或者你是否試圖更新一個現有的項目? – 2012-07-18 09:54:39

1

修改查詢如下

$query="INSERT INTO food (food_name,food_price) values('".$food_name."','".$foodPrice."'); 

如果CAT_ID已有意味着你必須使用更新查詢

update table food set food_name='$food_name' , food_price ='$foodPrice' where cat_id = $cat_id; 
+0

它插入和更新數據庫,因爲我想插入食物相對於類別 – user1533946 2012-07-18 09:41:03

+0

我只是想插入數據到我的表爲它我使用插入語句,但有條件插入即插入數據的類別。就像我插入辛格漢堡在桌子,它屬於快餐類,然後當我點擊快餐時,它可以顯示漢堡包的零食。 – user1533946 2012-07-18 10:06:29

+0

你可以給你的數據庫模式嗎? – 2012-07-19 11:33:19

3

你混合insertupdate語句來更新表。在insert中沒有where子句。你只是添加記錄表中沒有

INSERT INTO food (food_name,food_price) values('$food_name', $foodPrice) 

它要更新,你可以這樣做一個記錄任何條件:

update food set food_name = '$food_name', food_price = $foodPrice 
where cat_id= $cat_id"; 
+0

它是插入和更新數據庫的時候因爲我想插入食物項目的類別。 – user1533946 2012-07-18 09:40:57

+0

請詳細解釋。 – 2012-07-18 09:42:10

+0

我必須輸入條件的數據.. – user1533946 2012-07-18 09:55:33

0

不能使用WHERE在INSERT語句。

你有2種選擇:

進行更新:

UPDATE food SET food_name=<food_name>, food_price=<food_price> WHERE cat_id=<cat_id>; 

或進行INSERT(其中food_name + CAT_ID在這個例子中的唯一索引)是這樣的:

INSERT INTO foot (cat_id, food_name, food_price) VALUES (<cat_id>, <food_name>, <food_price>) ON DUPLICATE KEY UPDATE food_price=VALUE(food_price); 

INSERT INTO ... ON DUPLICATE KEY UPDATE ...是一個大規模更新聲明。

+0

我只是想插入數據到我的表中,因爲我使用的是插入語句,但插入的條件就是插入數據的類別。就像我插入zinger漢堡進入快餐類別的表。然後當我點擊快餐時,它會顯示辛格漢堡。 – user1533946 2012-07-18 10:06:36

+0

謝謝你,它很有用。我非常感謝你。 – user1533946 2012-07-18 10:11:29

+0

我的第二項任務是從數據庫中插入和檢索圖像。對於插入,我必須從硬盤選擇omage。 – user1533946 2012-07-18 10:19:03

0

如果您已經設置了ID,然後進行編輯。

UPDATE food SET food_name = "Name", food_price = "Price" WHERE cat_id = $cat_id 你並不需要在插入

+0

我只是想插入數據到我的表爲它我正在使用插入語句,但有插入條件即插入數據的類別。就像我插入zinger漢堡進入快餐類別的表。那麼當我點擊快餐時,它會刺激辛格爾漢堡。 – user1533946 2012-07-18 09:54:04