同时搜索三个区域,

时间:2014-01-28 15:01:26

标签: php sql mysqli

这就是我创建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"];
        ...
    }

问题是我收到了这个错误:

  

错误:您的SQL语法出错;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'。 $ navn。 “%”,或omrade喜欢“%”。 $ omrade。 “%”,或sogord   喜欢 ”%” 。 $ sog'在第1行

我不明白为什么会出现错误。为什么我收到错误?

1 个答案:

答案 0 :(得分: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);

  // ...