Я ОЧЕНЬ новичок в 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 );
Выяснил это: у меня был "ATRR_ERRMODE" вместо "ATTR_ERRMODE" (опечатка)
как дела?
Вы должны попытаться исправить это:
1- Два разных соединения:
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$handler = new PDO('mysql:host=localhost;dbname=test', 'test', 'test');
$handler->guery
query
в$handler->guery
. У вас естьg
вместоq
.$stmt
в одном скрипте и$handler
в другом скрипте, они не должны совпадать.