使用数组搜索MySQL数据库

时间:2012-06-18 16:11:53

标签: php mysql arrays

我希望我能正确地做到这一点。

使用此代码我从一个表中获取记录并将它们存储在一个数组中:

$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 个答案:

答案 0 :(得分:0)

您需要更快,更轻松地使用JOIN

答案 1 :(得分:0)

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

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

另请注意,不推荐使用mysql扩展,建议使用mysqli

答案 2 :(得分:0)

也许

SELECT * FROM $tbl_name
JOIN $users_tbl
ON $tbl_name.username = $users_tbl.following

答案 3 :(得分: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 Parameterized Queries

是我能想到的最好的