我的代码有问题,效果不好而且不编辑数据
edit.php
<?php
$data = array(':news_id' => $_POST['news_id'] , ':news_title' => $_POST['news_title'] , ':news_content' => $_POST['news_content']);
$DB_host = "localhost";
$DB_user = "root";
$DB_pass = "";
$DB_name = "acp";
try {
$dbh = new PDO("mysql:host={$DB_host};dbname={$DB_name}",$DB_user,$DB_pass);
$dbh -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
/*if (isset($_POST['news_id'])) {
$query = "UPDATE news SET 'news_title'=:news_title, 'news_content'=:news_content WHERE news_id=:news_id";
$sth = $dbh -> prepare($query);
$sth -> execute($data);
} */
$id = isset($_GET['news_id']) ? $_GET['news_id'] : NULL;
$sth = $dbh -> prepare("UPDATE news SET `news_title`=:news_title, `news_content`=:news_content WHERE `news_id`=:news_id");
$sth -> bindValue(":news_id", $_GET["news_id"], PDO::PARAM_INT);
$sth -> bindValue(":news_title", $_GET["news_title"]);
$sth -> bindValue(":news_content", $_GET["news_content"]);
$sth -> execute();
$sth -> closeCursor();
header('Location: ../news_admin.php');
}
catch(PDOException $e) {
echo $e->getMessage();
}
$dbh = null;
?>
答案 0 :(得分:1)
你应该在这里收到错误。您没有为列使用正确的分隔符:
UPDATE news SET `news_title`=? ...
请注意,您在第一个语句中使用了'news_title'
这样的单引号。这是一个字符串,而不是一个列,更新字符串在SQL中没有任何意义。
我要避免使用分隔符,除非您的列名与reserved words重叠,并避免首先以这种方式命名列。
由于您正在捕获异常,因此请确保您的错误报告正常运行。执行故意错误的查询将是验证这是否有效的一种方法。