0

? を配列の値に置き換える関数を作成しましたが、機能しません。

 public function exec($sql, Array $params = array()) {
            if($query = $this->db->prepare($sql)) {
                    $x = 1;
                    if(count($params)) {
                            foreach($params as $param) {
                                    $query->bindParam($x, $param);
                                    $x++;
                            }
                    }
            }
            $query->execute();
            print_r($query);

クエリ:

$mysql->exec("SELECT * FROM test where id = ?", array(0));

出力:

PDOStatement Object ( [queryString] => SELECT * FROM test where id = ? )
4

2 に答える 2

1

すべて正常に動作します。?呼び出し中にまだ表示される理由print_r($query);は、値が実際にはクエリ自体に入れられないためです。

準備されたステートメントが機能する方法は、呼び出すとprepare()、クエリがデータベースに送信されることです。その後、後で呼び出すとexecute()、すべての値がデータベースに送信され、残りの作業が行われます。

基本的に、あなたはクエリであり、値が接続されたりまとめられたりすることはありません。これが、値をエスケープする必要がない理由でもあります。

于 2013-10-16T03:48:25.100 に答える
-1

試す

$result = $query->fetchAll();
print_r($result);

それ以外の

print_r($query);
于 2013-10-16T03:52:08.710 に答える