1

私はこれを正しくやっているといいのですが。

このコードを使用して、1つのテーブルからレコードを取得し、それらを配列に格納しています。

$result = mysql_query("SELECT username FROM '$tbl_name'");
$storeArray = Array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $storeArray[] =  $row['username'];  
}

クエリの結果は次のとおりです(使用:)print_r($storeArray);

Array ( [0] => username1 [1] => username2 [2] => username3)

この配列を使用して別のテーブルを検索したいと思います。即興のコードは次のようになります。

SELECT * FROM $users_tbl WHERE username = username1, username2, username3

誰かがこれを行うMySQLクエリを生成するのを手伝ってもらえますか?

これが十分に明確であることを願っています。

4

4 に答える 4

0
foreach($storeArray as $value) {
    $inClause[] = '"'.filter_var($value,FILTER_SANITIZE_STRING).'"';
    // or apply your own -better- sanitizing/escaping instead of the filter_var
}
$query = "SELECT * FROM $users_tbl WHERE username IN (".implode(",",$inClause).");";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
    //Do something usefull with the rows here, just dumping their values for the example
    var_dump($row);  
}

はるかに安全なPDO パラメータ化クエリを使用せずに思いつくことができる最高のものです

于 2012-06-18T16:31:24.867 に答える
0

サブクエリを使用して、1 つのクエリでこれを行うことができます。

"SELECT * FROM `$users_tbl` WHERE `username` IN (SELECT username FROM `$tbl_name`)"

また、mysql 拡張機能は非推奨になっていることに注意してください。mysqliを使用することをお勧めします。

于 2012-06-18T16:16:29.147 に答える
0

多分

SELECT * FROM $tbl_name
JOIN $users_tbl
ON $tbl_name.username = $users_tbl.following
于 2012-06-18T16:16:58.757 に答える
0

JOINをより速く、より簡単に使用する必要があります。

于 2012-06-18T16:14:18.103 に答える