@fthiellaのソリューションは非常にエレガントです。
将来的にあなたが使用できる以上user_id
を表示したい場合には、参加して、1行に必要なすべてのデータがある可能性があります。
あなたがAND
条件を使用したい、との条件があなたのテーブルに複数の行にある場合は、JOINS
例使用することができます。
SELECT `w_name`.`user_id`
FROM `wp_usermeta` as `w_name`
JOIN `wp_usermeta` as `w_year` ON `w_name`.`user_id`=`w_year`.`user_id`
AND `w_name`.`meta_key` = 'first_name'
AND `w_year`.`meta_key` = 'yearofpassing'
JOIN `wp_usermeta` as `w_city` ON `w_name`.`user_id`=`w_city`.user_id
AND `w_city`.`meta_key` = 'u_city'
JOIN `wp_usermeta` as `w_course` ON `w_name`.`user_id`=`w_course`.`user_id`
AND `w_course`.`meta_key` = 'us_course'
WHERE
`w_name`.`meta_value` = '$us_name' AND
`w_year`.meta_value = '$us_yearselect' AND
`w_city`.`meta_value` = '$us_reg' AND
`w_course`.`meta_value` = '$us_course'
他の事:mysql_*
機能ではないため、プリペアドステートメントを使用することをお勧めしますがSQLインジェクションは保存され、廃止予定です。 あなたが可能な限り少ないコードを変更したい場合は、mysqli_
機能を使用することができます。 http://php.net/manual/en/book.mysqli.php
推奨事項:この表の
使用インデックス。 user_id
は、高度になり、インデックス、およびクエリの実行速度のために、あまりにもmeta_key
とmeta_value
ことをお勧めすることをお勧めします。
説明:
あなたは1行のための条件を「接続」AND
を使用している場合。したがって、複数の行をAND条件にしたい場合は、まずこのように複数の行から1行を作成する必要があります。
テスト: 表データ:
PRIMARY INDEX
int varchar(255) varchar(255)
/ \ |
+---------+---------------+-----------+
| user_id | meta_key | meta_value|
+---------+---------------+-----------+
| 1 | first_name | Kovge |
+---------+---------------+-----------+
| 1 | yearofpassing | 2012 |
+---------+---------------+-----------+
| 1 | u_city | GaPa |
+---------+---------------+-----------+
| 1 | us_course | PHP |
+---------+---------------+-----------+
$us_name='Kovge'
$us_yearselect='2012'
$us_reg='GaPa'
、$us_course='PHP'
とクエリの結果:
+---------+
| user_id |
+---------+
| 1 |
+---------+
だから、それが必要な作品。
同じ列( 'meta_key')に複数の異なる値を同時に設定するとどうでしょうか? [**新しいコードでは、使用しないでください 'mysql_ *'機能**](http://bit.ly/phpmsql)。彼らはもはや維持されている[正式に廃止されました](https://wiki.php.net/rfc/mysql_deprecation)。 [** red box **](http://j.mp/Te9zIL)を参照してください。代わりに[* prepared statements *](http://j.mp/T9hLWi)について学び、[PDO](http://php.net/pdo)または[MySQLi](http://php.net/ mysqli) - [この記事](http:// j。mp/QEx8IB)はどちらを決定するのに役立ちます。 PDOを選んだら、[こちらは良いチュートリアルです](http://j.mp/PoWehJ)。 – DCoder