使用%和bindValue作为MySQL PDO查询

时间:2013-12-08 16:31:09

标签: php mysql pdo

我很确定这是一个已经回答的问题。我正在阅读很多帖子,但我无法理解。 我试图从数据库中检索标题中包含“art”的所有文章(例如)。 我班上有以下功能:

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

2 个答案:

答案 0 :(得分:0)

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; }
}

答案 1 :(得分:0)

不应该是

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

?没有$上的:artt

编辑:哦,我看到你已经找到了