PHP PDO Select ID


PHP PDO Select ID

我正在从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":p rivate]=> object(PDO)#2 (0) { } ["port"]=> int(3306) ["statement"]=> object(PDOStatement)#6 (1) { ["queryString"]=> string(61) "选择名称,地址来自 business_information 其中 id = :id" } }

1)准备好的陈述比清理更好。
2)PDO::查询有另一个签名,请阅读手册。

/** @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;
}

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

好。让我们使用以下方法将值绑定到占位符:PDOStatement::bindValue

看看签名:

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

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