0

尝试在我的网站上创建关键字搜索。

我有一个搜索栏并在其中输入一个关键字,例如愤怒。我的网址现在将是www.website.com/?s=angry

如何对我的 VARCHAR 字段上的关键字进行 mysql 搜索查询?

谢谢

4

4 回答 4

3

您可以使用LIKE全文搜索*

  • 全文索引只能使用 MyISAM(MySQL 5.5 及之前)
  • 全文索引只能用于 MyISAM 和 InnoDB (MySQL 5.6 )
于 2012-11-19T15:26:44.820 回答
1

PHP

$search = $_GET['s'];   //clean this up to avoid sql injection

MySQL

SELECT * FROM MyTable
WHERE field1 LIKE '%search%' OR
      field2 LIKE '%search%' OR
      ...
      fieldn LIKE '%search%'

wheresearch应该替换为用户输入的内容

于 2012-11-19T15:28:51.270 回答
0

您可以LIKE在 SQL 语句中使用:

$search = $mysqli->real_escape_string($_GET['s']);
$query = "select column from table where varchar_column like '%$search%'";

这将在您的 VARCHAR 列中找到所有出现的搜索字符串。

编辑:添加代码以帮助防止 SQL 注入。显然,在将查询应用到生产环境时,您应该始终保护查询免受注入。

于 2012-11-19T15:27:06.040 回答
0

首先,您必须从 url 中获取搜索字符串。这可以在 php 中使用 $_GET 全局变量来完成。键代表 url 的“s=”部分。

$search = $_GET['s'];

然后你需要做一个 MYSQL 查询来搜索你的字段

SELECT * (or whatever column you need) FROM (table) WHERE (column) LIKE '%($search)%'

我建议使用 PDO 准备语句来执行查询,以便自动转义 $search 变量。

http://php.net/manual/en/book.pdo.php

于 2012-11-19T15:28:38.827 回答