同时搜索三个区域



这是我创建的搜索选项的方式,在页面上没有出现此线程,我必须工作的罚款,但这是我应该在表中查找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 Server版本,以供正确的语法使用 靠近 '。$ navn。"%"或omrade喜欢"%"。$ OMRADE。"%"或sogord 喜欢 "%" 。$ SOG'在第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);
  // ...

最新更新