2017-05-07 8 views
0

"activePages"列に特定のID番号が含まれているテーブルからランダムな行を呼び出しようとしています。類似の演算子で変数を使用する

例えば、activePagesは、1行に別の「456 789」を「123 456」が含まれている可能性があり、私は次のコードを使用し、ランダムにそれらの2行の1つを呼び出すには...

SELECT * FROM advertising WHERE activePages LIKE %456% ORDER BY rand() LIMIT 1 

を。

この同じことをしたいが、 "456"の代わりに変数を使用したい。これを動作させるにはどこに%を置く必要がありますか?あるいは、私は別の問題を完全に逃していますか?

これは私が今持っているものです。

$getad = $pdo->prepare('SELECT * FROM advertising WHERE activePages LIKE :id ORDER BY rand() LIMIT 1'); 
$getad->execute(['id' => $id]); 
+0

https://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html#operator_like –

+0

ワイルドカードが必要です。バインディングに追加する必要があります。または変数の代入に依存します。例6、http://php.net/manual/en/pdo.prepared-statements.phpを参照してください。 – chris85

答えて

0

はSOにいくつかの他の記事を確認するために、簡単なテストを書きました。 %をPHP変数に追加すると、同様の比較ができます。

<?php 
    $id = "%" . $searchTerm . "%"; 
    $sql = "SELECT * FROM TABLE 
      WHERE COLUMN LIKE :id"; 
    $stmt->execute([':id'=> $id]); 
?> 
+0

この場合、URLで設定されたページのIDを検索する必要があります。したがって、検索語自体が変数である場合、$ idを正しく設定するにはどうすればよいですか?私は "$ id =%$ searchTerm%"はうまくいくとは思わないでしょうか? – bababababa

+1

@babababab:あなたはこのようにすることができます:** '$ id = '%'。 $変数。 '%'; '** – spencer7593

0

この種類のCONCAT()構造を使用することができます。

WHERE COLUMN LIKE concat('%', :id, '%') 

あなたがCONCAT()に必要なものを置くことができるので、非常に柔軟です。

関連する問題