В моей таблице столбец называется group_members_id
содержит userid
из 10 пользователей.
Я пытался выяснить, как я могу сделать запрос с MySQL, который извлекает детали этой строки, если дано userid
соответствует любому из этих 10 идентификаторов пользователей.
"SELECT * FROM `table` WHERE `group_members_id`.contains('{$userid}')".
Этот код не работает. Может кто-нибудь мне помочь?
Вы можете использовать как это
"SELECT *
FROM `table`
WHERE `group_members_id` LIKE '%{$userid}%'"
использование лайк пункт
"SELECT * FROM table WHERE group_members_id LIKE '%$userid%'";
Во-первых, всегда используйте group_member_id в качестве идентификатора foregin и делайте это как int.
Во-вторых, никогда не используйте целочисленное значение в качестве строки. это поможет в других функциях, таких как сортировка и т. д.
В-третьих, если вы сохранили целое значение в виде строки в таблице, вы можете использовать следующее:
1.) Используйте ЛАЙК Ключевое слово Clause вместе со знаками процента в строке
"SELECT * FROM table WHERE group_members_id LIKE '%$userid%'";
2.) Если вы ищете более сложную комбинацию строк, чем вы указали в своем примере, вы можете использовать регулярные выражения (регулярное выражение):
Смотрите руководство MySQL для получения дополнительной информации о том, как их использовать: http://dev.mysql.com/doc/refman/5.1/en/regexp.html
Учитывая, что все идентификаторы пользователей имеют тип INT:
<?php
//$aUserIds is an array of your User Ids.
$userIds = implode(",", $aUserIds);
$sQuery = "SELECT * FROM table WHERE group_members_id IN (" + $uSerIds + ")";
В качестве альтернативы, если они имеют строковые типы, используйте:
$userIds = implode(",", $aUserIds);
$sUserIds = "";
foreach($userId as $userIds)
{
$sUserIds += "'" + userId + "'";
}
$sQuery = "SELECT * FROM table WHERE group_members_id IN (" + $sUserIds + ")";