2014-02-18 7 views
0

У меня есть данные в базе данных mysql. База данных каждый раз состоит из другого количества строк.Выберите данные из базы данных с PDO

Пример моего стола будет:

id team1 team2 home away tip 
---------------------------------- 
12 xxx yyy zzz kkk 
43 xxx yyy zzz kkk 
.  .  .  .  . 
.  .  .  .  . 

Так что мне нужно сделать, это цикл по каждой строке таблицы и быть в состоянии получить данные из этой строки, поэтому я могу создать кончик.

Я немного смущен тем, как я мог это сделать с помощью pdo.

Что я пробовал до сих пор пытаются получить столбец данных, как это:

$stmt = $db->prepare("SELECT id FROM tablename"); 
    $stmt->execute(); 
    $result=$stmt->fetchColumn(); 
    echo $result[0]; 

Но даже это, что я бы ожидать, чтобы вернуть мне первый идентификатор, который 12 в этом случае , просто возвращает меня 1. Любые идеи здесь?

+3

'echo $ result [0];' возвращает первый символ скалярного '$ result', поскольку вы используете' -> fetchColumn' только для получения 1 колонки, а не всей строки. Итак, либо 'echo $ result', либо использовать' $ result = $ stmt-> fetch(); '. В настоящее время то, что происходит, можно сравнить с этим: '$ result =" 12 "; echo $ result [0]; '(который, как вы можете проверить, действительно эхо« 1 ». – Wrikken

+0

' $ result = $ stmt-> fetch (PDO :: FETCH_ASSOC); if ($ result) {echo $ result ['id'];} 'должен работать.' $ result' будет либо иметь значение boolean FALSE, либо массив, поэтому простая проверка позволит избежать нежелательных ошибок – MonkeyZeus

+0

@wrikken, когда я использую $ result = $ stmt-> fetch() , действительно, работает, но когда я пытаюсь выполнить эхо $ result [1], я получаю сообщение об ошибке. Как я могу получить весь столбец в массиве, чтобы я мог просмотреть результаты? – user3287726

ответ

1
$stmt = $db->prepare("SELECT id FROM tablename"); 
try{ 
    $stmt->execute(); 
}catch(PDOException $err){ 
    //some logging function 
} 
//loop through each row 
while($result=$stmt->fetch(PDO::FETCH_ASSOC)){ 
    //select column by key and use 
    echo $result['id']; 
} 

в качестве альтернативы можно использовать fetchAll, чтобы выбрать весь набор данных в переменную. Тогда вам не нужно петли

Heres полезный ресурс для PDO:

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

+0

Это относится ко мне – humphrey

0
$getUsers = $DBH->prepare("SELECT * FROM tablename ORDER BY id ASC"); 
$getUsers->execute(); 
$users = $getUsers->fetchAll(); 

Может быть поможет вам

0

Попробуйте напечатать результат без индекса

$stmt = $db->prepare("SELECT id FROM tablename ORDER BY id ASC"); 
$stmt->execute(); 
$result = $stmt->fetchColumn(); 
echo $result; 
0

Использование выборки (с FETCH_NUM) вместо fetchColumn

$stmt = $db->prepare("SELECT id FROM tablename"); 
    $stmt->execute(); 
    $result=$stmt->fetch(PDO::FETCH_NUM); 
    echo $result[0]; 
0

, если вы хотите, чтобы петля Повсеместно вы можете использовать цикл while и ниже приведен пример

<?php 

$stmt =("SELECT id FROM tablename"); 
$result=$db->prepare($stmt); 
$result->execute(); 
while($row = $result->fetch(PDO::FETCH_ASSOC)) 
{ 
$id = $row['id']; 
echo $id; 
} 
?> 
Смежные вопросы