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

您需要使用JOIN,更快更容易。

于 2012-06-18T16:14:18.103 回答
0

您可以使用子查询在一个查询中执行此操作:

"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
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 回答