2

在更新 mySQL 数据库中的记录时,我只是无法让这个查询工作:

在我的更新脚本中,我发布了两个变量的内容,当我打印它们时我可以看到内容:

$orderno =$_POST['order_no'][$i];
$status =$_POST['order_status'][$i];

我的 SQL 查询如下所示:

<?php
if(isset($_POST['order_status']))
{
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$orderno =$_POST['order_no'][$i];
$status =$_POST['order_status'][$i];
print_r($_POST['order_no']);
$sql = 'UPDATE Orders SET status="' . '$status'. '" WHERE   Orderno="' .'$orderno' . '"';
echo $sql;
mysql_select_db('PurchaseOrders');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not update data: ' . mysql_error());
}
echo "Updated data successfully\n";
mysql_close($conn);
}
?>

这是将变量名称本身插入数据库,而不是打印的变量的值?非常感谢

4

3 回答 3

1

尝试以下操作:

$sql = 'UPDATE Orders SET status="' . $status. '" WHERE   Orderno="' .$orderno . '"';

还要考虑安全性。您没有验证任何形状或形式的字符串(订单号或状态)。

不推荐使用 mysql 函数,请考虑使用 mysqli

于 2012-09-21T09:00:52.807 回答
1
$sql = "UPDATE Orders SET status='" . $status . "' WHERE   Orderno= '" . $orderno . "' ";

当您将变量封装在单引号中时,PHP 将“按原样”使用它。它不会评估引号内的任何变量。

看看单引号和双引号的区别

于 2012-09-21T09:07:03.503 回答
0

使用这样的查询

$sql = "UPDATE Orders SET status='$status' WHERE  Orderno='$orderno'";

你在里面使用变量single quotes。内部single quotes变量名称无法解析,您必须为此使用double quotesdouble quotes可变价值即将到来。

于 2012-09-21T09:12:59.897 回答