mysql UPDATE查询无法运行

时间:2015-04-30 03:49:22

标签: 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  `food_item`.`id` ='$_POST[id]';";

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

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

4 个答案:

答案 0 :(得分:6)

如果您有input表格,

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

你应该通过

获得价值
 $_POST['product_name'];


  

GET 的表单方法是 POST 吗?

如果您的方法类型为POST,则应该将其设为$_POST['input_name']

如果您的方法类型为GET,则应该将其设为$_GET['input_name']


  

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

例如:如果您的表单有输入类型,

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

然后,在php代码中,您应该使用在name属性

中输入的内容来获取它
   $_POST['product_name'] OR $_GET['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已弃用。使用mysqliPDO

注意:

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

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

看起来不是mysql_connect,而是 mysqli_connect 。根据您的需要替换db值。

答案 1 :(得分:2)

您可以尝试使用以下代码来查找错误。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/call"
        android:icon="@drawable/fakecall"
        android:title="@string/call"/>
    <item
        android:id="@+id/sms"
        android:icon="@drawable/fakesms"
        android:title="@string/sms"/>
    <item
        android:id="@+id/statistic"
        android:icon="@drawable/statistic"
        android:title="@string/statistic"/>
    <item
        android:id="@+id/about"
        android:icon="@drawable/about"
        android:title="@string/about"/>

</menu>

以下代码。

echo mysql_error(); exit;

答案 2 :(得分:0)

为了访问双引号字符串中的数组变量,可以将它们括在大括号中,也可以将它放在双引号之外,并附加为字符串。在这里,您尝试添加如下所示的大括号:

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") ;
}

答案 3 :(得分:0)

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

我认为你在字段名food_name上应用了ticks()。去掉背蜱和将其替换为单引号(')