【发布时间】:2018-09-25 10:27:48
【问题描述】:
我尝试使用 PDO 和 mysqli 准备语句来解决它,但它仍然返回 false。所以只有sql语句可能有问题,但我不知道具体是什么。
$query = $db->prepare('SELECT * FROM bricks WHERE "text" LIKE CONCAT("%", :phrase, "%") AND tags LIKE CONCAT("%", :tag, "%") ORDER BY hearts DESC LIMIT {$start},{$pagesOnSite}');
$query->bindValue(':phrase', $phrase, PDO::PARAM_STR);
$query->bindValue(':tag', $tag, PDO::PARAM_STR);
$query->execute();
我也试过这样:
$sql='SELECT * FROM bricks WHERE "text" LIKE CONCAT("%", ?, "%") AND tags LIKE CONCAT("%", ?, "%") ORDER BY hearts DESC LIMIT {$start},{$pagesOnSite}';
$stmt = $db->prepare($sql);
$stmt->bind_param("ss", $phrase, $tag);
$stmt->execute();
【问题讨论】:
-
你为什么在通配符上使用 concat?
-
为什么在您的查询中
text周围有双引号?现在是字符串text,而不是列名。 -
我认为我必须使用 concat 因为我不能使用 "%?%"
-
我现在改了,它的文字
-
致命错误:未捕获的 mysqli_sql_exception:查询/准备语句中未使用索引 SELECT * FROM blocks WHERE text LIKE CONCAT("%", ?, "%") AND tags LIKE CONCAT("%", ?, "%") ORDER BY heart DESC LIMIT 0,12