2

mySQL データベースのレコードを更新するときに、このクエリを機能させることができません。

私の更新スクリプトでは、2 つの変数の内容を POST し、出力すると内容を確認できます。

$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 . "' ";

変数を単一引用符で囲むと、PHP はそれを「そのまま」受け取ります。引用符内にある変数は評価されません。

一重引用符と二重引用符の違いを見てください。

于 2012-09-21T09:07:03.503 に答える
1

次のことを試してください。

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

また、セキュリティも考慮してください。文字列 (注文番号またはステータス) を任意の形状または形式で検証していません。

同様に、mysql 関数は非推奨です。mysqli の使用を検討してください。

于 2012-09-21T09:00:52.807 に答える
0

このようなクエリを使用します

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

内部で変数を使用していますsingle quotes。内部single quotes変数名が解決されていないため、double quotesこれを使用する必要があります。double quotes変数値が来ています。

于 2012-09-21T09:12:59.897 に答える