2

これは前の質問からのフォローアップです:PDOで準備されたクエリをいつ使用するか。mysql_real_escapeエラー

まったくの初心者で、DBを照会する前に、各GET変数とPOST変数でmysql_real_escapeを使用していました。ホストにアップロードするようになったとき、これをPDOで使用するべきではないことに気づきました。ユーザーが送信したデータを含むすべてのクエリを準備されたクエリに変更する過程にあります。

次のようにDBに接続します。

$hostname = "localhost";
$username = "root";
$password = "root";

try {
     $dbh = new PDO("mysql:host=$hostname;dbname=wmpt", $username, $password);

}
catch(PDOException $e)
    {
    echo $e->getMessage();
    }

以下はクエリの例です。

$url = $_GET['q'];
$STH = $dbh->prepare("SELECT qid FROM tblurl WHERE url = :url");
$STH->bindParam(':url', $url);
$STH->setFetchMode(PDO::FETCH_ASSOC);  
$urlid = $STH->fetch();
print_r($urlid);

print_rはまったく何も出力しません。私は、DBから直接テスト値を使用してGET変数をテストしています。私が間違っていることについて何か考えはありますか?私はばかだと確信しています。助けていただければ幸いです。

4

1 に答える 1

1

結果を取得する前に、クエリを実行する必要があります。

$url = $_GET['q'];
$STH = $dbh->prepare("SELECT qid FROM tblurl WHERE url = :url");
$STH->bindParam(':url', $url);

$STH->execute();

$STH->setFetchMode(PDO::FETCH_ASSOC);  
$urlid = $STH->fetch();
print_r($urlid);
于 2012-10-26T14:42:32.447 に答える