搜索选项不会出现在页面上

时间:2014-01-28 13:42:52

标签: php sql

这就是我要在网站上制作搜索选项的方法。

当我将WHERE name = '%$name%"添加到sql时,它不能以某种方式工作。但是如果我把它拿走并且只有SELECT name, link, img, area FROM test dyslexic,那么内容会出现在页面上。

如果我搜索“丹麦

t将不会显示数据库实例的内容

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

如果我这样写的话,那么页面上就没有任何问题。

if($stmt = $this->mysqli->prepare('SELECT `navn`, `link`, `img`, `omrade` FROM `ordblindtest`'));

问题是当我在数据库中搜索某些内容时,第一个sql中的内容是如何在页面上显示的。

  • 我的问题是它没有找到我的sql的一些内容,正如我在第一段代码中描述的那样。

3 个答案:

答案 0 :(得分:0)

通常当您使用您正在使用的语句时,您可以像这样使用它:

WHERE name LIKE %".$name."%"

注意我没有使用“=”符号。我希望这会有所帮助。

答案 1 :(得分:0)

要将%用作通配符,您需要使用LIKE而不是=。另外,因为您正在使用预准备语句,所以您应该使用?占位符而不是变量。

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

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

'))
{

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

  // ...

答案 2 :(得分:-1)

使用单引号时,变量不会被解析,因此您的查询将逐字搜索字符串$navn

'SELECT `navn`, `link`, `img`, `omrade` FROM `ordblindtest` WHERE `navn` = "' . $navn . '"'

虽然你真的应该使用占位符而不是直接在查询中注入你的变量:

    'SELECT `navn`, `link`, `img`, `omrade` FROM `ordblindtest` WHERE `navn` = ?'

使用%时会使用LIKE,而不是在比较时使用。{/ p>