0

我有一组用户名,需要在发布时与数据库表匹配。

当我发布它时,我收到以下错误:

警告:mysqli_fetch_row() 期望参数 1 为 mysqli_result,布尔值在 /hermes/waloraweb008/b2049/information/folder/page.php 第 43 行 post_ok|213 中给出

这会在@符号之后创建数组(工作正常。):

$data = preg_replace('!((@)([-a-zA-Zа-яА-Я()0-9@:%_+.~#?&;//=]+))!i', '<a href="user.php?u=$3">$1</a>', $data);
$mentions = preg_match_all('!((@)([-a-zA-Zа-яА-Я()0-9@:%_+.~#?&;//=]+))!i', $data, $matches);
foreach ($matches as $findnames)
    {
        $shiz = implode(',',$findnames);
    }

这就是我要检查数据库中的数组的内容。

$mentionsql = "SELECT * FROM users WHERE username IN '$shiz'";
$mentionquery = mysqli_query($db_conx, $mentionsql);
$row83 = mysqli_fetch_row($mentionquery);
$musername = $row83["username"];

这样我以后可以这样做:

mysqli_query($db_conx, "INSERT INTO notifications(username, initiator, app, which_status,did_read, date_time) 
                        VALUES('$musername','$log_username','<a href=user.php?u=$log_username>$log_username</a> mentioned you in a status.','$statusid',now(),now())");

关于为什么会出现错误的任何想法?

4

1 回答 1

1

据我所知,您的代码$shiz是以逗号分隔的用户名字符串,因此:$shiz == 'user1, user2, user3'

在这一行上,您正在生成您的查询:

$mentionsql = "SELECT * FROM users WHERE username IN '$shiz'";

如果你插入我的例子,$shiz你会得到这样的查询:

"SELECT * FROM users WHERE username IN 'user1, user2, user3'"

但是,SQL 命令的实际语法In需要圆括号。此外,如果用户名是字符串,则需要将它们放在单引号中。所以你的查询应该是这样的:

"SELECT * FROM users WHERE username IN ('user1', 'user2', 'user3')"
于 2013-06-23T03:10:53.367 回答