我想更新信息。当我在代码中使用下面的代码时,我的代码中没有错误:
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") ;
}
答案 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
已弃用。使用mysqli
或PDO
。
注意:
$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()。去掉背蜱和将其替换为单引号(')