这就是我创建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行
我不明白为什么会出现错误。为什么我收到错误?
答案 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);
// ...