我目前正在使用MyBB设置,我正在尝试执行SQL查询,该查询可以检查用户是否属于某个其他组。但是,我遇到了困难。
MyBB将其他组ID存储在一个由逗号分隔的VARCHAR字段中,例如1,23,27,30,49等。我知道在PHP中,我可以使用逗号作为分隔符来爆炸字符串。我知道MySQL无法爆炸,但我可以使用substring_index来实现类似的目标。注意,每个用户可以随机列出其他组,因此并非所有用户都是相同的。
我正在尝试这个
Baz
这似乎不起作用。看https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_substring-index我似乎正在按照他们构建条件的方式,但我得到以下错误:
致命错误:未捕获PDOException:SQLSTATE [HY000]:常规错误:模式必须是E:\ xampp \ htdocs \ 11thinfantrybrigade.co.uk \ orbat.php中的整数:180堆栈跟踪:#0 E:\ xampp \ htdocs \ 11thinfantrybrigade.co.uk \ orbat.php(180):PDO->查询('选择用户名...',',1)')#1 {main}投放在第180行的E:\ xampp \ htdocs \ 11thinfantrybrigade.co.uk \ orbat.php
请问任何建议?
最终目标是打印符合该标准的用户列表。
谢谢。
答案 0 :(得分:0)
$stmt = $conn->query('SELECT username, additionalgroups FROM my_users WHERE SUBSTRING_INDEX(\'30\', \',\', 1)');
最好是这样的,因为引号之外的,
会给PHP带来麻烦。
答案 1 :(得分:0)
$query = 'SELECT username FROM my_users WHERE CONCAT(",",additionalgroups,",") LIKE "%,30,%"' ;
$stmt = $conn->query($query);
foreach ($stmt as $row)
{
print '<div class="name"><a href="#">' . $row['username'] . '</a></div>';
}