0

誰かがこれで私を助けることができますか? テーブルを更新しようとしても何も起こらず、何が問題なのかわかりません。さまざまなクエリを試しましたが、うまくいきませんでした。

私のコード: http://pastebin.com/8zDpm0Ah 23行目から動作しません

<?php

foreach($db->query("SELECT * FROM blog WHERE ID LIKE '$ID'") as $row){

    echo "Titel: <input type='text' size='50' name='titel' value='$row[titel]'><br>";
    echo "Post:<br>";
    echo "<textarea name='editblog'>";
    echo $row[post];
    echo "</textarea>";

    echo "<input type='hidden' name='ID' value='";
    echo $row[ID];
    echo "'>";
}
?>

<input type="submit" value="Edit post" name="postedit">
</form>
<script>
CKEDITOR.replace( 'editblog' );
</script>
<?php

if(isset($_POST['postedit'])){
    $titel = $_POST['titel'];
    $post = $_POST['editblog'];
    $ID = $_POST['ID'];

    $STH = $db->prepare("UPDATE blog SET titel='$titel',post='$post' WHERE ID=$ID");  
    $STH->execute();
    echo "<h2>Post edited!</h2>";
}
4

2 に答える 2

0

意図したとおりに準備済みステートメントを使用していない場合 (を使用$db->bind_params())、29 行目を次のように切り替えることをお勧めします。

$STH = $db->query("UPDATE blog SET titel='$titel',post='$post' WHERE ID=$ID");  

30行目を削除します。

于 2013-05-18T22:38:24.520 に答える
0

パラメータ化されたクエリをまったく使用しておらず、PDO に切り替えても、単に変更するだけではありませんmysql_query()$db->prepare()それ以上のことです。PDO を使用している間は、すべての変数をクエリに配置することはできません。次のコードについて話しています。

$STH = $db->prepare("UPDATE blog SET titel='$titel',post='$post' WHERE ID=$ID");  
                                $STH->execute();

値は、クエリの$title, $post and $idように置き換える必要があり?、後で実行できます。

したがって、次のことを試してください。

if(isset($_POST['postedit'])) {
     $title = $_POST['titel'];
     $post = $_POST['editblog'];
     $id = $_POST['ID'];
    try {
    $STH = $db->prepare("UPDATE blog SET titel = ?, post = ? WHERE ID = ? ");  
    $STH->execute(array($title, $post, $id));
    } catch(PDOExeption $e){
     echo 'The error is: '. $e->getMessage();
    }
    if($STH->rowCount() > 0){
       echo 'data updated successfuly';
    }else{
       echo 'data updating failed';
    }
}

デバッグ:

    <?php
    $title = 'I am post title';
    $post = 'I am POST';
    $id = '17';

    try {
    new PDO("mysql:host=localhost;dbname=addictus_db", "addictus_admin", "dikketetten");
    $STH = $db->prepare("UPDATE blog SET titel = ?, post = ? WHERE ID = ? ");  
    $STH->execute(array($title, $post, $id));
    } catch(PDOExeption $e){
     echo 'The error is: '. $e->getMessage();
    } 
于 2013-05-18T22:46:35.307 に答える