如何使用 Strpos 而不是 While 语句从 MySQL 数据库中选择结果


How to select results from a MySQL DB using Strpos instead of a While statement?

我一直在使用 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%将匹配foooffaffirmative

就像一般建议一样,我建议你使用php的MySQLi类;它是一个改进版本(因此i),并提供准备好的语句,所以你不必担心SQL注入。