0

私は 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(データベース)#1 (7) {["pdo":"database":private]=> object(PDO)#2 (0) { } ["ポート"]=> int(3306) ["ステートメント"] => object(PDOStatement)#6 (1) { ["queryString"]=> string(61) "SELECT name, address FROM business_information WHERE id = :id" } }

4

2 に答える 2

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 に答える
0

prepareデータベースに発行する前にステートメントを実行する必要がある場合があります。なんで?答えはPDO::prepareの近くにあります。を使用すると、戻り値として aprepareを保持していることに気付くでしょう。PDOStatement

オーケー。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 に答える