使用mybb创建mysql查询以分解存储字符串的字段

ht4b089n  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(291)

我目前正在使用一个mybb设置,我正在尝试执行一个sql查询,该查询可以检查用户是否属于某个附加组。然而,我有困难。
mybb在一个由逗号分隔的varchar字段中存储额外的组id,例如1、23、27、30、49等。我知道在php中,我可以使用逗号作为分隔符来分解字符串。我知道mysql不能爆炸,但我可以使用substring\u index来实现类似的目标。需要注意的是,每个用户都可能有一个随机的附加组列表,因此并非所有用户都是相同的。
我在试这个

$stmt = $conn->query('SELECT username, additionalgroups FROM my_users WHERE SUBSTRING_INDEX(30, ',', 1)');
foreach ($stmt as $row)
{
    print '<div class="name"><a href="#">' . $row['username'] . '</a></div>';
}

但这似乎不起作用。看着https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_substring-索引我似乎在遵循他们构造条件的方式,但我得到以下错误:
致命错误:未捕获的pdoexception:sqlstate[hy000]:常规错误:mode必须是e:\xampp\htdocs\11thinfantrybrigade.co.uk\orbat中的整数。php:180 stack 跟踪:#0 e:\xampp\htdocs\11thinfantrybrigade.co.uk\orbat.php(180):pdo->query('select username…',','1')#1{main}在e:\xampp\htdocs\11thinfantrybrigade.co.uk\orbat.php的第180行抛出
有什么建议吗?
最终目标是打印满足该条件的用户列表。
谢谢您。

e4eetjau

e4eetjau1#

$stmt = $conn->query('SELECT username, additionalgroups FROM my_users WHERE SUBSTRING_INDEX(\'30\', \',\', 1)');

最好是这样 , 在引号之外会给php带来麻烦。

5lwkijsr

5lwkijsr2#

$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>';
}

相关问题