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 Prepared Statement方法: 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 回答