我希望我能正确地做到这一点。
使用此代码我从一个表中获取记录并将它们存储在一个数组中:
$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查询吗?
我希望这很清楚......
答案 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 ,是我能想到的最好的