PHP PDO MySQL函数不编辑数据

时间:2015-11-03 20:02:26

标签: php mysql pdo

我的代码有问题,效果不好而且不编辑数据

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;
?> 

1 个答案:

答案 0 :(得分:1)

你应该在这里收到错误。您没有为列使用正确的分隔符:

UPDATE news SET `news_title`=? ...

请注意,您在第一个语句中使用了'news_title'这样的单引号。这是一个字符串,而不是一个列,更新字符串在SQL中没有任何意义。

我要避免使用分隔符,除非您的列名与reserved words重叠,并避免首先以这种方式命名列。

由于您正在捕获异常,因此请确保您的错误报告正常运行。执行故意错误的查询将是验证这是否有效的一种方法。