首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抓取PDO - $handler与$stmt?

问抓取PDO - $handler与$stmt?
EN

Stack Overflow用户
提问于 2015-03-07 08:35:12
回答 2查看 73关注 0票数 0

我是PHP / PDO的新手,所以请温文尔雅…

我正在尝试将代码输入到我的数据库中,然后将其提取到网页中。我可以做第一个,但我很难展示它。我想知道是不是因为我试图将$stmt和$handler结合在一起?

这是我将信息输入数据库的代码:

代码语言:javascript
复制
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;

它工作得很完美。

这是我从数据库中获取信息的代码。

代码语言:javascript
复制
<?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的不同有关?我一直在关注在线教程,并很可能将两个教程混合在一起,试图实现我正在寻找的目标。

更新:

通过更新从数据库调用的方式,我设法让它正常工作:

代码语言:javascript
复制
$host = "localhost";
$dbname = "test";

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

$handler = new PDO( "mysql:dbname=$dbname;host=$host" , $user , $password );
EN

回答 2

Stack Overflow用户

发布于 2015-03-07 09:55:31

弄明白了--我用“ATRR_ERRMODE”代替了“ATTR_ERRMODE”(拼写错误)

票数 0
EN

Stack Overflow用户

发布于 2015-03-07 09:58:38

你好吗?

您应该尝试修复它:

1-两种不同的连接:

代码语言:javascript
复制
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);


$handler = new PDO('mysql:host=localhost;dbname=test', 'test', 'test');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28909994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档