-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>

//これはドロップダウンメニューとテキストボックスからデータを取得するフォームです

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サーバーのバージョンに対応するマニュアルで、1行目の「wherecat_id=4」の近くで使用する正しい構文を確認してください。」

カテゴリを選択して、食品の名前と価格を挿入する必要があります

4

5 に答える 5

3

挿入に where 句は必要ありません。id を設定してパラメーターの 1 つとして渡す必要がある場合は意味がありません。自動インクリメントの場合は含めないでください。

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

mysqli または PDO の使用を検討してください。ただし、SQL クエリに関しては、mysql_* バージョンを使用しないでください。SQL インジェクションから保護するのに役立つ準備済みステートメントの使用を検討する必要があります。

于 2012-07-18T07:47:33.580 に答える
3

あなたは混合insertupdateステートメントです。にinsertwhere節はありません。条件なしでテーブルにレコードを追加するだけです

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";
于 2012-07-18T07:47:58.763 に答える
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;
于 2012-07-18T07:47:41.983 に答える
0

INSERTステートメントでWHEREを使用することはできません。

2つのオプションがあります:

更新する:

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

または、次のようにINSERTを作成します(この例では、food_name + cat_idにunique-indexがあります)。

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 ...は一括更新ステートメントです。

于 2012-07-18T07:51:30.903 に答える
0

すでに ID を設定している場合は、それを編集します。

UPDATE food SET food_name = "Name", food_price = "Price" WHERE cat_id = $cat_id 挿入にwhere句は必要ありません

于 2012-07-18T08:04:38.833 に答える