Php 在Like算子中使用变量

Php 在Like算子中使用变量,php,mysql,Php,Mysql,我试图从“activePages”列具有特定id号的表中调用一个随机行 例如,ActivePage可能在一行中包含“123 456”,在另一行中包含“456 789”,我使用以下代码: SELECT * FROM advertising WHERE activePages LIKE %456% ORDER BY rand() LIMIT 1 …随机调用这两行中的一行 我想做同样的事情,但是用一个变量代替“456”。我需要将%放在哪里才能工作?还是我完全忽略了另一个问题 这就是我现在拥有的: $

我试图从“activePages”列具有特定id号的表中调用一个随机行

例如,ActivePage可能在一行中包含“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]);

写了一个快速测试来验证其他一些帖子。将
%
添加到PHP变量可以进行类似的比较

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

您可以使用这种构造

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

您可以将所需的任何内容放入
CONCAT()
,因此它非常灵活。

请在两侧使用通配符,并将其附加到绑定或变量赋值中。参见示例6。在本例中,我需要搜索词作为页面的id,由URL设置。因此,当搜索词本身是一个变量时,如何正确设置$id?我认为“$id=%$searchTerm%”不起作用,是吗?@babababa:你可以这样做:
$id=''%'$变量“%”