2013-03-24 3 views
-1

Я создаю функцию PHP, которая должна отвечать на вызов jQuery Ajax, в зависимости от того, какой идентификатор отправлен. Может быть несколько форм с одинаковым идентификатором, и я не могу понять, почему он не отправляет больше одной записи. PS: Мой отец убьет меня, если я не понять это в понедельник ...PDO JSON кодирует несколько строк таблицы HTML

Мой 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)); 
    } 
?> 
+0

Вы видите какие-либо ошибки или данные, по крайней мере возвращается вернуться к вашему звонку AJAX? –

+0

Нет, но когда я ввожу URL-адрес файла в браузере, я получаю {"error": true} – StenW

+0

Ну, это ожидается, так как данных нет, а 'empty' вернет true. Итак, когда вы запускаете этот запрос за пределами сценария AJAX, он возвращает более одной записи? –

ответ

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

Thx man! Очень ценю, что я не видел чата, пока не опоздал на два часа. – StenW

+0

heh, проблем нет. Рад, что я мог бы помочь –

+0

Знаете ли вы, что это делает: echo json_encode (array ('error' => false, 'list' => implode ('', $ out))); – StenW

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