-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 行的 'where cat_id= 4' 附近使用正确的语法”

它应该通过选择类别来插入食物名称和价格

4

5 回答 5

3

您不需要在插入时使用 where 子句,这没有任何意义,如果您需要设置 id 然后将其作为参数之一传递,如果它是自动增量,则不要包含它。

$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陈述。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";
于 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

如果您已经设置了 id,请编辑它。

UPDATE food SET food_name = "Name", food_price = "Price" WHERE cat_id = $cat_id 插入时不需要 where 子句

于 2012-07-18T08:04:38.833 回答
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 在此示例中具有唯一索引):

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