Извлечение PDO - обработчик $ против $ stmt?

0

Я ОЧЕНЬ новичок в PHP/PDO, поэтому, пожалуйста, будьте осторожны...

Я пытаюсь ввести код в свою базу данных, а затем вынести его на веб-страницу. Я могу сделать первый, но мне трудно его отобразить. Мне интересно, потому что я пытаюсь объединить $ stmt и $ handler вместе?

Это мой код для ввода информации в базу данных:

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // prepare sql and bind parameters
    $stmt = $conn->prepare("INSERT INTO survey (storename, receipt, date_visit)
    VALUES (:storename, :receipt, :date_visit)");
    $stmt->bindParam(':storename', $storename);
    $stmt->bindParam(':receipt', $receipt);
    $stmt->bindParam(':date_visit', $date_visit);

    // insert a row
    $storename = $_POST['storename'];
    $receipt = $_POST['receipt'];
    $date_visit = $_POST['date_visit'];

}
catch(PDOException $e)
{
    echo "Error: " . $e->getMessage();
}
$conn = null;

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

Это мой код для получения информации из моей базы данных.

<?php

try {
    $handler = new PDO('mysql:host=localhost;dbname=test', 'test', 'test');
    $handler->setAttribute(PDO::ATRR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo $e->getMessage();
    die();
  }

class SurveyEntry {
    public $id, $storename, $receipt, $date_visited,
        $entry;

    public function __construct() {
        $this->entry = "{$this->storename} posted: {$this->receipt}";
    }
}

$query = $handler->query('SELECT * FROM survey');
$query->setFetchMode(PDO::FETCH_CLASS, 'SurveyEntry');
while($r = $query->fetch()) {
    echo $r->entry, '<br>';
}

?>

Я могу подтвердить, что он правильно подключается, но я не могу заставить его отображать какую-либо информацию. Мне интересно, как это связано с различием в $ stmt и $ handler, которые я использую? Я слежу за учебниками онлайн и, возможно, смешиваю 2 учебника вместе, чтобы попытаться достичь того, что я ищу.

ОБНОВИТЬ:

Мне удалось заставить его работать, обновив, как я вызвал из базы данных:

$host = "localhost";
$dbname = "test";

$user = "test";
$password = "test";

$handler = new PDO( "mysql:dbname=$dbname;host=$host" , $user , $password );
  • 0
    Вы $handler->guery query в $handler->guery . У вас есть g вместо q .
  • 0
    Неважно, что вы называете переменными. Вы можете назвать это $stmt в одном скрипте и $handler в другом скрипте, они не должны совпадать.
Показать ещё 13 комментариев
Теги:
pdo

2 ответа

0

Выяснил это: у меня был "ATRR_ERRMODE" вместо "ATTR_ERRMODE" (опечатка)

0

как дела?

Вы должны попытаться исправить это:

1- Два разных соединения:

$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);


$handler = new PDO('mysql:host=localhost;dbname=test', 'test', 'test');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню