Почему этот SQL-запрос возвращает false, когда я пытаюсь связать значения (даже подготовить оператор)? - PullRequest
0 голосов
/ 25 сентября 2018

Я пытался решить эту проблему с помощью 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();

1 Ответ

0 голосов
/ 25 сентября 2018

Если вы хотите связать некоторый текстовый литерал, окруженный подстановочными знаками, то вам следует встроить все это строковое значение в ваш код PHP.Затем свяжите это со своим утверждением.

$sql = "SELECT * FROM bricks ";
$sql .= "WHERE text LIKE :phrase AND tags LIKE :tag ";
$sql .= "ORDER BY hearts DESC LIMIT {$start}, {$pagesOnSite}";
$query = $db->prepare($sql);
$query->bindValue(':phrase', '%'.$phrase.'%', PDO::PARAM_STR);
$query->bindValue(':tag', '%'.$tag.'%', PDO::PARAM_STR);
$query->execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...