-3

「ユーザー」という名前のテーブルに「アラート」という名前のデータベース列があり、各ユーザーのアラートのデータが次のように入力されています。

UserA -> 1,2,3,4,5,6
UserB -> 33,44,22
UserC -> 333,444,555

カンマ区切りの数字は pid (投稿 ID) です。

今、私は特定の「pid」を持つユーザーを取得したいと思っています.444など

このクエリを使用しています。

$query = $db->query("SELECT uid FROM users WHERE alerts LIKE '%{$pid}%'");
$uid = $db->fetch_array($query);

問題は、ユーザーを取得しますが、一意ではないことです。たとえば、pid = 444 を検索している場合、アラート列に「4」を持つすべてのユーザーが取得されます。ユニーク ユーザーを検索するにはどうすればよいですか。

4

2 に答える 2

3

これを使って:

$query = $db->query("SELECT uid FROM users WHERE FIND_IN_SET('{$pid}',alerts);

FIND_IN_SET(str,strlist)

于 2013-10-07T12:36:46.123 に答える
0

複数値の列を取り除くためにデザインを修正できない場合は、それで十分です。

Like '4' または Like '4,%' または like '%,4' または like '%,4' がそれを行います。

これで、経験豊富な開発者が、誰かが再びこの過ちを犯したのを見ると顔をしかめる理由がわかりました...

于 2013-10-07T12:44:00.720 に答える