PHP PDO选择ID

时间:2012-04-25 22:04:52

标签: php pdo

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

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

$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返回:

  

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

2 个答案:

答案 0 :(得分:0)

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

奥基。允许将值绑定到占位符:PDOStatement::bindValue

看一下签名:

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

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

答案 1 :(得分: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;
}