-1

送信された ID に応じて、jQuery Ajax 呼び出しに応答する PHP 関数を作成しています。同じ ID を持つ複数のフォームが存在する可能性があり、複数のレコードが返されない理由がわかりません。PS: 月曜日までにこの問題を解決しないと、父に殺されます...

私のPHP:

<?php
  if (!empty($_GET['id'])) {
    $id = $_GET['id'];
    try {
      $objDb = new PDO('mysql:host=localhost;dbname=blankett', 'root', 'root');
      $objDb->exec('SET CHARACTER SET utf8');
      $sql = "SELECT * 
              FROM `forms`
              WHERE `id` = '$id'";
      $statement = $objDb->prepare($sql);
      $list = $statement->fetchAll(PDO::FETCH_ASSOC);
      if (!empty($list)) {
        $out = array();
        foreach ($list as $row ) {
          $out[] = '<tr><td><a href="'.$row['link_form'].'">'.$row['name_form'].'</a></td> <td>'.$row['date_added'].'</td></tr>';
        }
        echo json_encode(array('error' => false, 'list' => $out));
      } else {
        echo json_encode(array('error' => true));
      }
    } catch(PDOException $e) {
      echo json_encode(array('error' => true));
    }
  } else {
    echo json_encode(array('error' => true));
  }
?>
4

1 に答える 1

1

プリペアドステートメントを誤って使用しています。まず、変数をステートメントに入れてはいけません。次に、ステートメントを実行する必要があります。

php.netサイトの例を次に示します。

$sql = 'SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour';
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150, ':colour' => 'red'));
$red = $sth->fetchAll();
$sth->execute(array(':calories' => 175, ':colour' => 'yellow'));
$yellow = $sth->fetchAll();

そして、これがあなたがそれをする方法です:

$sql = "SELECT * 
FROM `forms`
WHERE `id` = :formID";

$statement = $objDb->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$statement ->execute(array(':formID' => $id));
$list= $statement ->fetchAll();
于 2013-03-24T01:11:32.567 に答える