2015-04-04 4 views
-1

Почему это возвращает одно значение, и когда я запрашиваю базу данных напрямую, я получаю несколько значений?Почему это возвращает одну строку вместо нескольких?

$statement = $sql->prepare 
     ('select * from items where user_id = (select id from user where ?=? limit 1)'); 
    $statement->bindParam('s', $property); 
    $statement->bindParam('s', $value); 
    $statement->execute(); 

    $data = $statement->fetch(PDO::FETCH_ASSOC); 
    echo json_encode($data); 

ответ

2

вместо

$data = $statement->fetch(PDO::FETCH_ASSOC); 

попробовать

$data = $statement->fetchAll(PDO::FETCH_ASSOC); 
+0

Прохладный! спасибо, вы знаете, почему я не могу выполнить (array ($ property, $ value)) вместо выполнения bindParam? По какой-то причине это не работает. – luis

+0

см. # Пример 2, в этой ссылке http://php.net/manual/en/pdostatement.execute.php и попытайтесь пройти так, как –

+0

, что не работает. тоже не #example 3 – luis

1

У вас есть одна проблема в вашем SQL, вы не можете связать столбцы/имена таблиц вы должны изменить эту where ? = ?, чтобы where your_columns_name = ? в этом line:

$statement = $sql->prepare('select * from items where user_id = (select id from user where ?=? limit 1)'); 

и для извлечения всех ваших записей:

$data = $statement->fetchAll(PDO::FETCH_ASSOC); 
+0

@luis Я думаю, что вы должны прочитать мой ответ, потому что у вас есть одна ошибка в вашем sql, посмотрите и исправьте свой код –

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