无法使用变量名更新数据库?

时间:2012-09-21 09:00:13

标签: php sql

在更新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);
}
?>

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

3 个答案:

答案 0 :(得分:1)

尝试以下方法:

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

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

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

答案 1 :(得分:1)

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

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

查看difference between single quotes and double quotes

答案 2 :(得分:0)

使用像这样的查询

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

您在single quotes内使用变量。内部single quotes变量名称未解析,您必须使用double quotes。在double quotes变量值即将到来。