2017-05-07 29 views
0

我試圖從列「activePages」列出某個id號的表中調用一個隨機行。在Like Operator中使用變量

例如,activePages可能包含「123 456」上的一排,「456 789」上的另一個我用下面的代碼:

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

寫了一個快速測試,以驗證等等一些其他職位。將%添加到PHP變量適用於類似的比較。

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

在這種情況下,我需要搜索詞作爲頁面的ID,由URL設置。所以當搜索詞本身是一個變量時,我該如何正確設置$ id?我不認爲「$ id =%$ searchTerm%」會起作用,會嗎? – bababababa

+1

@bababababa:你可以這樣做:**'$ id ='%'。 $變量。 '%'; ** – spencer7593

0

您可以使用這種CONCAT()構造。

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

你可以把任何你需要到CONCAT(),所以它是非常靈活。