2015-03-03 3 views
1

Я пытаюсь получить результаты, когда столбец равен значению в этом столбце, мой код запускается с предложением where, удаленным из запроса, но с ним не возникают ошибки, но foreach не работает.PHP PDO MYSQL - выбор, где не возвращаются результаты

$themes = Singlequery ('SELECT * FROM items WHERE type = :theme ORDER BY id = :id DESC LIMIT 5', 
         array('theme' => ['theme'], 'id' => ['id']), $conn); 

<?php foreach ($themes as $theme) : ?> 
     <li><a href="#"><?= $theme['name']; ?></a></li> 
<?php endforeach; ?> 

Это моя функция вот почему меня привязки;

function Singlequery($query, $bindings, $conn) 
{ 
    $stmt = $conn->prepare($query); 
    $stmt->execute($bindings); 

    return $stmt->fetchAll(PDO::FETCH_ASSOC); 
} 
+0

Попробуйте отлаживаем функцию 'Singlequery()', используя 'echo $ stmt-> errorCode()' и 'print_r ($ stmt-> errorInfo())'. И опубликуйте здесь результаты. – marian0

+0

* «мой код запускается с предложением where, удаленным из запроса» * - ваш запрос не удался. * ", но с этим никакие ошибки не выбрасываются" * - Вы проверяете их? http://php.net/manual/en/function.error-reporting.php - 'setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION)' –

ответ

3

Ваши параметры массив является неправильным, он должен быть:

array(':theme' => $theme, ':id' => $id) 

Примечания к : там. Кроме того, ваши значения представляют собой массивы. Когда PDO начинается связывание, это будет ожидать строки, и находит массив, так что, скорее всего, ваш запрос (если параметры работали в первую очередь), ш ульд производить эквивалент:

SELECT ... WHERE type = 'Array' ORDER BY id = 'id' 
0

Вы могли бы остаться в PHP:

$themes = Singlequery ('SELECT * 
         FROM items 
         WHERE type = :theme 
         ORDER BY id = :id DESC 
         LIMIT 5', 
         array('theme' => $myTheme, 
           'id' => $myId), 
         $conn); 

foreach ($themes as $theme) { 
    echo '<li><a href="#">'.$theme['name'].'</a></li>'.PHP_EOL; 
} 

Вы все равно должны обеспечить значение для $myTheme и $myId.

2

Вы связываете массив.

array('theme' => ['theme'], 'id' => ['id'])

['theme'] эквивалентно array(0 => 'theme')

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