2013-06-06 3 views
0

Я пытаюсь изучить mySQL PDO .. прочитайте учебник после учебника и попытайтесь применить различные способы выполнения простого оператора SELECT.mySQL PDO не может выбрать из таблицы

Вот моя последняя попытка:

<? 
include("inc/connPDO.php"); // hostname, username and password and dbName are in here 
try { 
$dbh = new PDO("mysql:host=$hostname;dbname=$dbName", $username, $password); 
/*** echo a message saying we have connected ***/ 
echo 'Connected to database'; // this outputs appropriately 

/*** The SQL SELECT statement ***/ 
$sql = "SELECT * FROM rofWeapons"; 
echo '<p>'.$sql; 
foreach ($dbh->query($sql) as $row){ // *** line 11 error 
    print $row['weaponName'] .' - '. $row['weaponType'] . '<br />'; 
} 


/*** close the database connection ***/ 
$dbh = null;  
} 
    catch(PDOException $e) 
{ 
    echo $e->getMessage(); 
} 

?> 

Выход следующий:

Connected to database

SELECT * FROM rofWeapons

Warning: Invalid argument supplied for foreach() in /home/path/to/script/script.php on line 11

Я следую учебник .. Еогеасп выглядит хорошо. Почему это недопустимый аргумент?

Когда я ввожу «SELECT * FROM rofWeapons» в запросы mySQL, таблица отлично выглядит.

Немного помогите пожалуйста?

Другой Покушение

Если я пытаюсь PREPARE заявление:

/*** The SQL SELECT statement ***/ 
$weaponType=1; 
    $sql = "SELECT * FROM rofWeapons WHERE weaponType=:weaponType"; 

$stmt = $dbh->prepare($sql); // *** error Line 12 *** 
$stmt->bindValue(':weaponType', $weaponType, PDO::PARAM_INT); 
$stmt->execute(); 
$stmt->setFetchMode(PDO::FETCH_ASSOC); 

while($row = $stmt->fetch()) { 
     print $row['weaponName'] .' - '. $row['weaponType'] . '<br />'; 
    } 

я не получаю сообщение об ошибке. Ничего.

Это очень неприятно. Что я делаю не так?

+2

Вы не извлечение массива ... –

+1

@ Mr.Alien код является правильным. См. Первый пример здесь http://php.net/manual/en/pdo.query.php –

+1

print_r ($ dbh-> query ($ sql)) Каков результат? –

ответ

4

Вы не выбрали массив для использования в цикле.

Изменение:

foreach ($dbh->query($sql) as $row){ 
    //YOUR CODE STUFF 
} 

To:

foreach ($dbh->query($sql)->fetchAll as $row){ 
    //YOUR CODE STUFF 
} 

Он отлично работает.

+0

Я ценю это, но я все равно получаю сообщение об ошибке: Предупреждение: неверный аргумент для foreach() в строке ... 11. Может быть что-то не так с настройками PHP на моем сервере? Я пытаюсь больше месяца работать PDO. Я просто получаю ошибку после ошибки. – mandalorianwarrior

+2

Надеюсь, что в вашей таблице есть запись. –

+0

извините, что вы имеете в виду? в таблице есть записи .. когда я вручную вводим SELECT в командной строке, он работает – mandalorianwarrior

0

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

$sql = "SELECT * FROM rofWeapons"; 
$sth = $dbh->query($sql); 
while($row = $sth->fetch(PDO::FETCH_ASSOC)) 
{ 
    print $row['weaponName'] .' - '. $row['weaponType'] . '<br />'; 
} 
+0

, который дает мне эту ошибку: Неустранимая ошибка: вызов функции-члена fetch() для не-объекта в – mandalorianwarrior

+1

что? попробуйте обратиться сюда http://php.net/manual/en/pdostatement.fetch.php –

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