0

我正在从NetTuts学习 PDO,到目前为止,我已经成功地根据字符串搜索 FETCH_ASSOC。

问题:PDO::按整数搜索需要哪个?我以为是PDO::Fetch_OBJ。以下返回错误。

$busid = $this->sanitize($string);

$database->query('SELECT name, address FROM business_information WHERE id = :id', array(':id' => $busid));  
var_dump($database);
    if($database->count() >= '1') {
                $results->setFetchMode(PDO::FETCH_OBJ); 
                   while($row = $results->fetch()) { 
                        $test = "Name: ".$row['name']." Address: ".$row['address'];             

    }else{
        $test = "no results were found";

    }

var_dump 返回:

对象(数据库)#1 (7) {["pdo":"database":private]=> object(PDO)#2 (0) { } ["port"]=> int(3306) ["statement"] => object(PDOStatement)#6 (1) { ["queryString"]=> string(61) "SELECT name, address FROM business_information WHERE id = :id" } }

4

2 回答 2

0

prepare在将它发送到数据库之前,您可能想要一个语句。为什么?答案就在PDO::prepare附近。当您使用prepare时,您会发现自己持有 aPDOStatement作为返回值。

好的。让我们将值绑定到一个占位符:PDOStatement::bindValue

看一下签名:

`bool PDOStatement::bindValue(mixed $parameter,
                              mixed $value
                              [,int $data_type=PDO::PARAM_STR])`

data_type: 使用 PDO::PARAM_* 常量的参数的显式数据类型。您可以data_type手动设置,但在 99% 的时间里没有必要。(正如我发现的那样。)

于 2012-04-25T22:23:50.107 回答
0

1)准备好的陈述比消毒更好。
2) PDO::query 有另一个签名,请阅读手册。

/** @var \PDO $PDO */
$query = $PDO->prepare('SELECT name, address FROM business_information WHERE id = :id');
if (!$query) return false;
if (!$query->execute(array(':id' => $busid))) return false;
$results = $query->fetchAll(\PDO::FETCH_ASSOC);
if (empty($results)) return false;
foreach ($results as $row)
{
    $test = "Name: ".$row['name']." Address: ".$row['address'];
    echo $test, PHP_EOL;
}
于 2012-04-25T22:32:40.883 回答