2017-11-22 4 views
0

動的クエリビルダを作成しようとしています。PHP PDOでパラメタをバインドする

私は2ビットのコードを持っています。

最初のビットは、PDOオブジェクトを作成します(私はこれがうまくいくと思います)。そして、私のquerybuilderで検索機能を実行します。

include 'core/database/dbloader.php'; 
$domainName = "lomcn.org"; 

$query = new dbquery(Connection::make($dbconfig['domainhistory'])); 
$query->search('dns','domain',$domainName); 

検索機能がある -

public function search($table,$field,$domainName) 
{ 
    $statement = $this->pdo->prepare("SELECT * FROM {$table} WHERE {$field} LIKE :domain"); 
    $statement->bindParam(":domain",$domainName); 
    $statement->execute(); 

    return ($statement->fetchAll(PDO::FETCH_ASSOC)); 
} 

これは、すべてのエラーを返さない、しかし何もデータが表示されません。何か不足していますか?目的はあなたが実行する必要があります

$query->search(table,field,value); 

それだけで動作します。

+0

'$ domainName'にはどのような例がありますか? – IncredibleHat

+0

'$ domainName'にワイルドカードがあるか、まったく一致するものを探していますか? – chris85

+0

どうすればいいですか?画面や何かには何も印刷しません。 – vrijdenker

答えて

0

もちろん、何も表示されていない、あなたは何も表示するように言わなかった。 echoコマンドはありません。印刷コマンドはありません。何もない。

$query->search(table,field,value);の代わりに、次のようなものを試すことができます。あなたのSQL文でLIKE句を使用している場合

foreach ($query->search(table,field,value) as $row) { 
    print $row['DB_COLUMN_1']; 
    print $row['DB_COLUMN_2']; 
    print $row['DB_COLUMN_3']; 
} 

また、あなたは予想通り、ワイルドカードまたはLIKE句の文句​​を言わない作業としてパーセント記号を使用する必要があります。したがって、完全一致を検索する場合を除き、bindParamを次のように変更してください。

$statement->bindParam(":domain", "%" . $domainName . "%"); 
+0

あなたは正しいです。私はばかです。私はそれを返すと仮定して画面にダンプするだろうが、それはできませんでした。 – TheOne745665