1

管理パネルの場合、各行で削除、編集、追加オプションを備えたテーブルを作成しました。更新クエリの実行を除いて、すべてが完璧に機能しています。今まで、編集するテキストをそのフォームで表示し、編集値を次のページは、echo() を使用して確認しました。私のコードは次の update.php です

<head>

<?php   
// 1. Create a database connection
// 2. Select a database to use 
include('connect.php');
?>
<?php
// 3. Perform database query          
$id=$_SESSION['id'];       
$author=$_GET['author'];
$quotation=$_GET['quote'];

//below code is to check
echo $id . "<br>". $author . "<br>". $quotation ."<br>";
//4. update query
$query = "UPDATE 'quotations' SET 
'author' = '$author',
'quotation' = '$quotation', 
WHERE 'id' = '$id'";
mysql_query($query);
// test to see if the update occurred
if (mysql_affected_rows() == 1) {
// Success!
echo "The page was successfully updated."; 
} else {
echo "The page could not be updated.";
}
?>
<?php
 // 5. Close connection
 mysql_close($connection);
session_destroy();
//header("Location: Admin.php");   commented just to observe the output.

?>
</body>
</html>

クエリの前にエコーを使用して、編集値を取得しています。つまり、フォームに問題はなく、データベースが接続されていても更新はありません。この点に関する提案は大歓迎です。

4

2 に答える 2

1

MySQL-変数をエスケープしてください!またはさらに良いこと: mysqli/PDO 準備済みステートメントを使用します。

WHEREさらに、テーブル名は一重引用符で囲まれており、句の前にコンマがあります。代わりに逆引用符を使用します (または、そのテーブル名には引用符がまったくなくても問題ありません)。

$query = "UPDATE `quotations` SET 
'author' = '$author',
'quotation' = '$quotation'
WHERE 'id' = '$id'";

MySQLi: http://php.net/manual/en/book.mysqli.php

MySQLi プリペアド ステートメント: http://php.net/manual/en/mysqli.prepare.php

PDO: http://php.net/manual/en/book.pdo.php

PDO プリペアド ステートメント メソッド: http://php.net/manual/en/pdo.prepare.php

于 2013-05-23T03:27:09.957 に答える
0

データベースの ID 属性は数値フィールドですか? その場合、文字列に一重引用符を追加しないでくださいUPDATE

$query = "UPDATE 'quotations' SET 
'author' = '$author',
'quotation' = '$quotation', 
WHERE 'id' = $id"
于 2013-05-23T03:19:38.077 に答える