Php mysql更新查询未运行

Php mysql更新查询未运行,php,mysql,sql,sql-update,Php,Mysql,Sql,Sql Update,我想更新信息。当我在代码不起作用时,我的代码中有什么错误: if(isset($_POST['submit'])){ $sql = "UPDATE `food`.`food_item` SET `food_name` = '$_POST[food_name]', `food_price` = '$_POST[food_price]', `food_cat` = '$_POST[food_category]' WHERE

我想更新信息。当我在代码不起作用时,我的代码中有什么错误:

if(isset($_POST['submit'])){
    $sql = "UPDATE  `food`.`food_item` 
    SET `food_name` =  '$_POST[food_name]',
        `food_price` =  '$_POST[food_price]',
        `food_cat` =  '$_POST[food_category]' 
        WHERE  `food_item`.`id` ='$_POST[id]';";

    $result = mysql_query($sql) or die("query not");

    header("Location: product_info.php") ;
}

为了访问双引号字符串中的数组变量,可以将它们括在花括号中,或者将其放在双引号之外并作为字符串追加。在这里,您可以尝试添加如下的花括号:

if(isset($_POST['submit'])){
    $sql = "UPDATE  `food`.`food_item` 
    SET `food_name` =  '{$_POST['food_name']}',
        `food_price` =  '{$_POST['food_price']}',
        `food_cat` =  '{$_POST['food_category']}' 
        WHERE  `food_item`.`id` ='{$_POST['id']}';";

    $result = mysql_query($sql) or die("query not");

    header("Location: product_info.php") ;
}

如果您有一个类似的表单
input

<input type="text" name="product_name" />

您的表单方法是POST for GET吗

如果您的方法类型是
POST
,则应该像
$\u POST['input\u name']

如果您的方法类型是
GET
,那么应该像
$\u GET['input\u name']


您在html中提到的所有输入名称是否与php代码中的名称匹配

如果你有一个输入类型的表单

  <input type="text" name="product_name" />
不是什么

   $_POST['prod_name'] OR $_GET['prod_name']

试试这个

if(isset($_POST['submit'])
{
 $food_name = $_POST['food_name'];
 $food_price = $_POST['food_price'];
 $food_cat = $_POST['food_category']; 
 $id = $_POST['id'];

 // do not directly input the form data to sql, filter it by a special function mysqli_real_escape_string
// eg : $food_price = mysqli_real_escape_string($db, $_POST['food_price']);
// before executing the query, try to echo the each form input and sql query for clear picture.

$sql = "UPDATE  `food`.`food_item` SET `food_name` =  '$food_name',`food_price` =  '$food_price',`food_cat` =  '$food_cat' WHERE  `food_item`.`id` ='$id'";
$result = mysqli_query($db, $sql);
if($result)
{
    //header("Location: product_info.php") ;
    echo "success";
}
else
{
   echo "fail";
 }
}
else
{
  echo "form not submitted";
  // use header to redirect to old page again
}
警告:

mysql
已被弃用。使用
mysqli
PDO

注意:

$db
是一个数据库连接变量。你需要像这样设置

$db = mysqli_connect("localhost","username","password","database_name");

看,它不是mysql\u connect,它是mysqli\u connect。根据需要替换db值。

您可以尝试以下代码查找错误

echo mysql_error(); exit;
在下面的代码之后

$result = mysql_query($sql)

只需回显$sql;检查查询中的实际值。在MYSQL查询中复制并运行它


我认为您在字段名
food\u name
上应用了反勾号()。删除反勾号&将其替换为单引号(')

添加数据库连接
mysql\u查询($sql,$your\u连接)
。顺便说一句,您可能会开始学习PDO连接,因为您使用的是不推荐的。您收到的错误消息是什么?另外,请查看您确实不想将_POST数据直接放入sql的原因。请尝试删除“$sql”字符串
$result=mysql_query($sql)中的分号,或者删除($mysql_error())
您应该通过,
$\u POST['product\u name']获取值
$\u发布[产品名称]-虽然这不是一个好的做法,但它们的值中的POST数组是完全有效的。然而,OP可能并没有告诉我们一切。我们也不知道他们使用哪个MySQL API进行连接。为什么要声明一个新变量来分配此post变量,这会消耗更多内存?记住,我们也不知道他们的HTML表单是什么样子。它们可能没有任何元素的name属性,包括它们的submit按钮,它们的代码执行完全依赖于该条件语句。另外,如果表单的方法是GET,那么这也会导致无声的失败。向前看;-)@弗雷德二世-我同意。我也会尝试补充,我没有看到评论。
echo mysql_error(); exit;
$result = mysql_query($sql)