LIKE与%和bindValue用于MySQL PDO查询


LIKE with % and bindValue for a MySQL PDO Query

我很确定这个问题已经得到了回答。我读了很多帖子,但我听不懂。我正试图从数据库中检索标题中包含"艺术"的所有文章(例如)。我在班上有以下功能:

public function searchArtTitle($art_title_search)
{
    if ($this->databaseConnection()) {
$query_art_title = $this->db_connection->prepare('SELECT * FROM articles WHERE art_title LIKE :$artt');
$query_art_title->bindValue(':artt', '%$art_title_search%', PDO::PARAM_STR);
$query_art_title->execute();
else {
        echo "DB article title search failed";
    return false; }
}

这是使用类的代码:

<?php
require_once("../config/config.php");
require_once("get_art.php");
$articles = new get_art();
$search_word = 'Art';
$search_res=$articles->searchArtTitle($search_word);
print_r($search_res2);
foreach($search_res as $search_item) {
    echo "<div>";
    echo $search_item['art_title'] . "<br>";
    echo "</div>";
}
?>

我得到一个空数组,不应该。我想这里有多个错误。。。请帮助一个愚蠢的新手:D

它不应该是吗

$query_art_title = $this->db_connection->prepare('SELECT * FROM articles WHERE art_title LIKE :artt');

:artt 上没有$

编辑:哦,我看到你已经发现

public function searchArtTitle($art_title_search)
{
    if ($this->databaseConnection()) {
$query_art_title = $this->db_connection->prepare('SELECT * FROM articles WHERE art_title LIKE :$artt'); **// <- REMOVE THE DOLLAR**
$keyword = "%".$art_title_search."%";
$query_art_title->bindValue(':artt', $keyword, PDO::PARAM_STR);
$query_art_title->execute();
else {
        echo "DB article title search failed";
    return false; }
}