我一直在使用 PHP 函数 strpos 从数据库中查找包含字符串字符的结果:
User Types: Hel
Results: Hello, Hell, Helli, Hella
我基本上让它查询整个表:
$result = mysql_query("SELECT * FROM Events");
然后运行一个 while 语句以查看哪些结果包含输入的字符:
while($row = mysql_fetch_array($result))
{
$pos = strpos($row['Title'], $q);
if ($pos === false) {
} else {
echo $row['Title'];
}
}
为了找到结果的数量,我使用了:
$n = $n++
while 语句的内部。
我知道你可以使用:
$num_rows = mysql_num_rows($result);
如果您只从数据库中选择这些值,要查找结果数,但我是否必须使用此 while 语句来查找与 strpos 函数匹配的结果数?或者我可以将 strpos 放入"从中选择"查询中吗?
任何帮助都非常感谢,
泰勒
这似乎效率很低。 你为什么不简单地让数据库为你做搜索呢?
$result = mysql_query("SELECT * FROM Events WHERE Title LIKE '" . addslashes($q) . "%'");
然后只需循环浏览结果。
您可以将SQL更新为类似
SELECT *
FROM Events
WHERE Title LIKE '{your_string}%'
不过,请确保过滤 sql 注入。
您可以使用 LIKE 语句:
SELECT * FROM Events WHERE field1 LIKE '%something%'
其中特殊%
字符说"任何长度的任何内容";所以我们搜索的是某些东西(或什么都没有),然后是字符串,然后是某些东西(或什么都没有)。例如,搜索%f%
将匹配foo
、off
和affirmative
。
就像一般建议一样,我建议你使用php的MySQLi类;它是一个改进版本(因此i
),并提供准备好的语句,所以你不必担心SQL注入。