2013-05-24 4 views
-1

Итак, я объединил некоторый код, пытающийся сделать подготовленный оператор PDO в php/mysql.PDO Подготовленные утверждения - Просмотр результатов запроса

Все работает в том смысле, что страница не прослушивает, но я не могу показать результаты запроса «эхо» в html, и я не знаю, что мне не хватает ,

Вот мой код перед <head>:

try { 
    # MySQL with PDO_MYSQL 
    $pdo = new PDO("mysql:host=$hostname_db;dbname=$database_db", $username_db, $password_db); 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

    // writ the query 
    $stmt = $pdo->prepare('SELECT * FROM table WHERE id = ?'); 
    $stmt -> execute(array($rid)); 
    $row_count = $stmt->rowCount(); 
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC); 

} 
// Error message for pdo 
catch(PDOException $e) { 
    echo $e->getMessage(); 
} 

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

<body> 
<p>Hello</p> 
<p><?php echo $results['field1']; echo ', row count: '.$row_count;?></p> 
</body> 

в $ row_count приходит правильно, как 1, но я пытаюсь вызвать значение в поле 1, но ничего не происходит.

Что мне не хватает?

ответ

0

fetchall docs

Возвращает несколько строк назад в массиве: array(row_1, row_2).

Строки их сами также массивы.

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

Fetch:

$results = $stmt->fetch(PDO::FETCH_ASSOC); 

Foreach:

foreach($results as $result){ 
    echo $result['field_1']; 
} 
1

PDO::fetchAll возвращает массив результатов, т. Е. Массив ассоциативных массивов. Вместо этого вы можете использовать PDO::fetch.

0

Изменить это: -

$results = $stmt->fetchAll(PDO::FETCH_ASSOC); 

в

$results = $stmt->fetch(); 
Смежные вопросы