0

これは一部の人にとっては簡単なことかもしれませんが、私は問題を抱えています。「$my_id」がクエリ配列内に存在する場合にデータを取得する mysql クエリを実行する必要があります。このようなもの、または同じ結果を達成するためのアイデア....

mysql_query("SELECT myArray FROM myTable WHERE my_id IN (myArray) LIMIT 1")

何か案は?

編集:

テーブル内の配列はコンマで区切られています

4

2 に答える 2

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に関連付けられているかを検索できます。

于 2012-06-09T03:58:37.710 に答える
0

それが1次元配列の場合、それを単純化するだけです。

implode("','", $array)

INはコンマ区切りの値を取ります。http://www.w3schools.com/sql/sql_in.asp

于 2012-06-09T04:00:03.097 に答える