我对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 :(得分:0)
想出来 - 我有'ATRR_ERRMODE'而不是'ATTR_ERRMODE'(错字)
答案 1 :(得分:0)
您应该尝试修复它:
1-两个不同的连接:
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$handler = new PDO('mysql:host=localhost;dbname=test', 'test', 'test');