2013-05-18 6 views
0

Может ли кто-нибудь помочь мне с этим? Когда я пытаюсь обновить мою таблицу, ничего не происходит, и я не могу понять, что не так. Я пробовал разные запросы, но не работал.Операция обновления Mysql не будет выполнена

Мой код: 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>"; 
} 
+0

Что такое ошибка у вас есть? нет ошибки? – Somar

+0

Нет ошибки :( –

+0

убедитесь, что идентификатор передан в переменную $ ID, если переменная пуста, где предложение ничего не сделает – Somar

ответ

0

Если вы не используете подготовленные заявления, поскольку они были предназначены (с использованием $db->bind_params()), то я рекомендую линию 29 переключения на

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

и удаление линии 30.

+0

Протестировано, что уже не работает. –

+0

Только заполнители должны использоваться в подготовленном операторе, а не в переменных. – bestprogrammerintheworld

+0

Этот оператор не является подготовленным оператором, он выполняет строку необработанного запроса. – jkjustjoshing

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'; 
    } 
} 

Debugging:

<?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(); 
    } 
+0

Я сделал это, чтобы он ничего не показывал .. :( –

+0

@YoshiPeters Вы скопировали и заменили его кодом, который у вас есть? –

+0

Просто ничего не сделал вскочить. –

Смежные вопросы