2014-12-28 11 views
-2

그래서 문제는 행을 업데이트 할 수 없습니다. 캡션을 업데이트하는 번호와 같게 설정할 때 준비된 문장을 포함하면 작동하지 않습니다.행을 업데이트 할 수 없습니다.

편집 : 이제는 업데이트되지 않지만 오류는 없습니다.

<?php 
try { 
    $handler = new PDO('mysql:host=127.0.0.1;dbname=db', 'root', ''); 
    $handler ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch (PDOException $e) { 
    echo $e->getMessage(); 
    die(); 
} 


if (isset($_POST['submit'])) { 
    if ($_POST['submit'] == "Edit") { 
     $sql = $handler->prepare('UPDATE images SET caption = :caption WHERE id = :id'); 
     $sql->execute(array(
        ':caption' => $_POST['caption'], 
        ':id' => $_POST['id'] 
       )); 
    } 
} 
?> 

<!DOCTYPE html> 
<html> 
<body> 

<main> 
    <form action="new.php" method="post"> 
     <?php 
      $sql = $handler->prepare('SELECT * FROM images WHERE active = 1'); 
      $sql->execute(); 
      $row = $sql->fetchAll(); 

      for ($i=0; $i<count($row); $i++) { 
       echo '<input type="text" name="id" value="'. $row[$i]['id'] .'"><br><br>'; 
       echo '<input type="text" name="caption" value="'. $row[$i]['caption'] .'"><br><br>'; 
      } 
     ?> 
     <input type="submit" name="submit" value="Edit"> 
    </form> 
</main> 
+2

당신이 PDO 예외가 켜져 있습니까? '$ db-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);'이것은 유용한 에러를 발생시킵니다. 나는 당신이'UPDATE'에'WHERE' 절을 가지고 있지 않다는 것을 알았습니다. 이것은 당신이 _ rows_을 수정하고 있음을 의미합니다. –

+0

그래, 내가 id ...에 문제가있어서 .. 설정할 때마다 Undefined index ... – Darkez

+0

그래서 코드를 업데이트 했는데도 오류는 없었습니다. – Darkez

답변

-1

동일한 이름의 입력이 여러 개있는 경우 마지막으로 제출 한 값만 표시됩니다. 게시 후

for ($i=0; $i<count($row); $i++) { 
    echo '<p><input type="text" name="caption['.$row[$i]['id'].']" value="'. $row[$i]['caption'] .'" /></p>'; 
} 

: 플러스 당신은 닫는 태그를 누락

if ($_POST['submit'] == "Edit") { 
try { 
    $handler->beginTransaction(); 
    foreach($_POST['caption'] as $id => $caption){ 
    $handler->prepare("UPDATE images SET caption=:caption WHERE id=:id"); 
    $handler->bindValue(':id', $id, PDO::PARAM_INT); 
    $handler->bindValue(':caption', $caption, PDO::PARAM_STR); 
    $handler->execute(); 
    } 
    $handler->commit(); 
} catch (Exception $e) { 
    $handler->rollBack(); 
    echo "Failed: " . $e->getMessage(); 
} 
} 
관련 문제