-4

重複の可能性:
PHP で LIKE ステートメントを使用して PDO パラメーター化クエリを作成するにはどうすればよいですか?

私のSQL文は最初は次のようでした:

"SELECT companyname, axiscategory 
FROM axispl WHERE companyname 
LIKE '$searchterm%' LIMIT 11"

これを PDO 形式に変更したいと思います。私が持っている疑いは、検索用語で使用したワイルドカードに関するものです (... で始まるものは何でも)。これを PDO 形式で実現するにはどうすればよいですか?

WHERE までコードを書きました。それから companyname = : ... を書くことになったとき、私は立ち往生しました。

$query = $db->prepare("SELECT companyname, axiscategory 
FROM axispl WHERE companyname 
LIKE '$searchterm%' LIMIT 11");
4

2 に答える 2

3

プリペアド ステートメントは、クエリとパラメーターを分離するので便利です。連結は今や忘れるべきものです。

$query = $db->prepare("SELECT companyname, axiscategory 
    FROM axispl WHERE companyname 
    LIKE :searchterm LIMIT 11");

$query->bindValue('searchterm',$searchterm.'%');
$query->execute();
//then to fetch the results
$query->fetch(PDO::FETCH_ASSOC);

ここでは、読みやすいように名前付きパラメーターを使用しましたが、次のようなインデックス付きパラメーターを使用することもできます。

$query = $db->prepare("SELECT companyname, axiscategory 
    FROM axispl WHERE companyname 
    LIKE ? LIMIT 11");

$query->bindValue(1,$searchterm.'%');
$query->execute();
于 2012-12-23T18:41:31.710 に答える
1
$query = $db->prepare("SELECT companyname, axiscategory
                       FROM axispl
                       WHERE companyname LIKE ?
                       LIMIT 11");

次に、次を使用して実行します$query->execute(array($searchterm.'%'));

于 2012-12-23T18:40:27.687 に答える