テーブルに。という名前の列がありますusers
。このテーブルから行を取得する必要があります。
users
列の値は次の形式です45br67br89br96
。テーブルのusers列がbr
(改行)によって内破されていることを意味します
列に特定の値が存在する場合は、テーブルの行を取得する必要があります。たとえば、ユーザーに89が含まれている行を取得する必要があります。
どうすればこれに対するクエリを書くことができますか?
MySQLLIKE
演算子を使用します。指定された式(列のフィールドの値など)と指定されたパターンの単純な比較を実行します。あなたの場合、パターンはユーザーID(eg 89
)であり、式は列名(users
)です。
SELECT * FROM `my_table` WHERE `users` LIKE "%89%"
キャラクターは%
とても便利です。ゼロ文字であっても、任意の数の文字に一致します。(もう1つは_
-正確に1つの文字に一致します。)
上記はもちろん例です。PHPスクリプトで通常使用する場合は、パターンを変数として渡す必要があります。
<?php
$i_search_for = 89;
$query = 'SELECT * FROM `my_table` WHERE `users` LIKE "%' . $i_search_for . '%"';
?>
この講義もお勧めします:データベースの正規化。
すべてのユーザーIDを抽出するには、セルの値全体をクエリしてpreg_match_allを適用するだけです。
$str ="45br67br89br96";
preg_match_all('#([0-9])+#', $str, $array, PREG_PATTERN_ORDER);
$matches = $array[0];
foreach($matches as $var)
{
print($var." ");
}
出力:45 67 89 96
あなたの質問を理解したら、値を調べてからユーザーを検索します。
そのようです:
$arr = explode("br", $users_value);
$row = array_search('89', $arr);