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