2014-01-28 26 views
0

这就是我如何创建search option does not appear on the page这个线程和罚款我必须工作,但这是我应该如何查找表中的3个领域,它以任何方式工作。同时搜索三个区域,

if($stmt = $this->mysqli->prepare('SELECT `navn`, `link`, `img`, `omrade` FROM `ordblindtest` WHERE `navn` LIKE "%" . $navn . "%" OR `omrade` LIKE "%" . $omrade . "%" OR `sogord` LIKE "%" . $sogord . "%"')) 
    { 
     $stmt->bind_param('sss', $navn, $omrade, $sogord); 
     $navn = $_POST["sogord"]; 
     $omrade = $_POST["sogord"]; 
     $sogord = $_POST["sogord"]; 
     ... 
    } 

问题是,我得到这个错误:

Error on: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '. $navn . "%", OR omrade LIKE "%" . $omrade . "%", OR sogord LIKE "%" . $sog' at line 1

我不明白为什么它似乎有错误。为什么我收到错误?

+0

你注入的变量到你的查询。这不是如何使用准备好的语句。 – h2ooooooo

+0

[搜索选项没有出现在页面上]可能的重复(http://stackoverflow.com/questions/21407213/search-option-does-not-appear-on-the-page) – MichaelRushton

回答

1

因为你使用准备好的语句,你应该使用?占位符代替的变量,所以您的查询应该是这样的:

if ($stmt = $this->mysqli->prepare(' 

    SELECT 
    `navn`, 
    `link`, 
    `img`, 
    `omrade` 
    FROM 
    `ordblindtest` 
    WHERE 
    `navn` LIKE CONCAT("%", ?, "%") 
    OR 
    `omrade` LIKE CONCAT("%", ?, "%") 
    OR 
    `sogord` LIKE CONCAT("%", ?, "%") 

')) 
{ 

    $stmt->bind_param('sss', $navn, $omrade, $sogord); 

    // ... 
+0

感谢您的帮助Michael。 :d – Jesperbook