これは一部の人にとっては簡単なことかもしれませんが、私は問題を抱えています。「$my_id」がクエリ配列内に存在する場合にデータを取得する mysql クエリを実行する必要があります。このようなもの、または同じ結果を達成するためのアイデア....
mysql_query("SELECT myArray FROM myTable WHERE my_id IN (myArray) LIMIT 1")
何か案は?
編集:
テーブル内の配列はコンマで区切られています
mysql_query("SELECT myArray FROM myTable WHERE my_id IN ('".implode("', '", array_map('mysql_real_escape_string', $array))."') LIMIT 1");
編集
私はあなたがやろうとしていることを理解していると思います。これにはmysqlLIKEを使用できますが、実際には非効率的です(全表スキャンを実行する必要があります)。mysqlの1つのフィールドに値のリストを保存しないでください。
エンティティ間に1対多の関係を作成する必要があります。あなたは実際に私たちに多くの情報を与えていないので、私たちはあなたのテーブルに保存されているエンティティをfoosと呼びます。つまり、fooを格納するという名前のテーブルがありfoos
ます。各fooは、現在「配列」に格納されているいくつかのバーと関係があります。これは1対多の関係と呼ばれます。これらのバーは、別のテーブル呼び出しに含める必要がありますbars
。行ごとに1つのバーを格納し、各バーは1つのfooに関連付けられているため、fooのIDを各バーと一緒に格納します。特定のバーに関連付けられているfooを見つけたい場合は、単純な結合を行うだけです。
バーを多くのfoo間で共有できる場合、これは多対多マッピングと呼ばれます。次に、foo用に1つのテーブル、bar用に1つのテーブル、およびfooをbarにマップするための3番目のテーブルが必要です。次に、どのfooがどのバーに関連付けられているか、およびどのバーがどのfooに関連付けられているかを検索できます。
それが1次元配列の場合、それを単純化するだけです。
implode("','", $array)
INはコンマ区切りの値を取ります。http://www.w3schools.com/sql/sql_in.asp