strpos() with mysqli query


strpos() with mysqli query

$text = "Mike is registered on Website";

迈克是一个网站的注册用户,我想找到他的名字和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.";
   }
}

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

您的代码从表中获取第一行。如果有几行,第一行可能不是迈克。@Hernantas的答案输出所有用户都很好。但是你的问题还有另外两个陷阱。首先,您的代码将匹配用户"网站",而您的字符串是"Mike 已在网站上注册"。这是不受欢迎的状态,对吧?然后,其次,您应该直接通过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.";
}