-1

問題のコードは次のようになります。

if (isset($_SESSION['logged_in'])) {
    if (isset($_POST['title'], $_POST['content'], $_POST['id'])) {
        $title = $_POST['title'];
        $content = $_POST['content'];
        $id = $_POST['id'];
    }
    if (empty($title) or empty($content) or empty($id)) {
        $error = 'All fields are required!';
    } else {

        try {

            $query = $pdo->prepare("UPDATE articles SET article_title = ?, article_content = ? WHERE article_id = ? ");


            $query->bindValue(1, 'title');
            $query->bindValue(2, 'content');
            $query->bindValue(3, 'id');

            $query->execute();

            header('Location: index.php');
        } catch (PDOException $e) {
            print_r($e->errorInfo);
            die();
        }
    }
}

エラーはまったく発生せず、テーブルは更新されません。

PS私は一般的にPHPにまったく慣れていないので、私のエラーが少し些細なものである場合は我慢してください。他に質問する人がいないだけです。

4

2 に答える 2

2
$query->bindValue(1, 'title'); 
$query->bindValue(2, 'content'); 
$query->bindValue(3, 'id'); 

bindValueの2番目の値は、値の名前ではなく、次のような値である必要があります

$query->bindValue(1, $title); 
$query->bindValue(2, $content); 
$query->bindValue(3, $id, PDO::PARAM_INT); 
于 2013-03-24T13:09:33.770 に答える
2

PHPを初めて使用する場合は、プレースホルダー(?)を使用してクエリを実行する別の方法を試してみることをお勧めします。これは、はるかに簡単だからです。

まず、接続を設定します。

try {
  # First let us connect to our database 
  $db = new \PDO("mysql:host=localhost;dbname=xx;charset=utf8", "xx", "xx", []); 
 } catch(\PDOException $e){
   echo "Error connecting to mysql: ". $e->getMessage();
 }
 $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

次に、次のようなprepare/executeメソッドを呼び出します。

$stmt = $db->prepare("
        UPDATE articles 
        SET article_title = ?, article_content = ? 
        WHERE article_id = ?
 ");

 $stmt->execute(array($article_title, $article_content,$article_id));

 if($stmt->rowCount()) {
   echo 'success';
 } else {
   echo 'update failed';
 }
于 2013-03-24T13:12:11.703 に答える