Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 同时搜索三个区域,_Php_Sql_Mysqli - Fatal编程技术网

Php 同时搜索三个区域,

Php 同时搜索三个区域,,php,sql,mysqli,Php,Sql,Mysqli,这就是我创建这个线程的方式,我必须做的很好,但这就是我应该在表中查找3个字段的方式,它以任何方式工作 if($stmt = $this->mysqli->prepare('SELECT `navn`, `link`, `img`, `omrade` FROM `ordblindtest` WHERE `navn` LIKE "%" . $navn . "%" OR `omrade` LIKE "%" . $omrade . "%" OR `sogord` LIKE "%" . $so

这就是我创建这个线程的方式,我必须做的很好,但这就是我应该在表中查找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服务器版本,以便使用正确的语法 差不多$纳文。“%”,或类似“%”的
omrade
$欧姆拉德。“%”,或
sogord
比如“%”$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);

  // ...

您正在向查询中注入变量。这不是如何使用准备好的语句。可能重复