带有 mysqli 查询的 strpos()

strpos() with mysqli query

$text = "Mike is registered on Website";

Mike 是一个网站的注册用户,我想用 strpos()

找到他的名字
$find = $db->query("SELECT username FROM users");
$finduser = $find->fetch_object();

if(strpos($text, $finduser->username) !== false) {
  echo $finduser->username." is a user on Website.";
}

但它不显示回显Mike is a user on Website.。 我不知道我做的是否正确。

谢谢。

为了回答您的问题,我假设您要搜索数据库中的所有用户,无论它是否在文本(字符串)中。

所以你要做的是循环你的数据库用户的每一行并检查用户名是否在文本中。方法如下:

while ($finduser = $find->fetch_object()) // Loop all of your database row
{
   if(strpos($text, $finduser->username) !== false) {
     echo $finduser->username." is a user on Website.";
   }
}

您的代码提供的只是检查第一行。这里 link 用于 php 文档 http://php.net/manual/en/mysqli-result.fetch-object.php

您的代码从 table 中获取第一行。如果有几行,第一行可能不是 Mike。 @Hernantas 的答案输出所有用户就好了。但是你的问题还有另外两个陷阱。首先,您的代码将匹配用户 "Website" 而您的字符串是 "Mike is registered on Website"。这是不受欢迎的状态,对吧?然后,其次,您应该直接通过 SQL:

请求用户名
$searched_name = "Mike";

$find = $db->query("SELECT username FROM users
    WHERE username='" . mysqli_escape_string($searched_name) . "'");

if ($finduser = $find->fetch_object()) {
  echo "{$searched_name} is a user on Website.";
} else {
  echo "{$searched_name} is not found.";
}