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)