【发布时间】:2015-08-26 10:09:46
【问题描述】:
我在 foreach 循环中的 mysqli_query 遇到问题,我首先从表中获取字符串,然后将其分成数组。然后我尝试遍历数组并在循环内调用查询。
$langs_result = mysqli_query($con, "SELECT Languages FROM users WHERE Username = '$username'");
$row = mysqli_fetch_assoc($langs_result);
$langs = $row['Languages'];
$userLangs = str_replace(" ","",$langs);
$userLangs = explode(",",$langs);
print_r($userLangs);
$posts = array();
foreach($userLangs as $lang){
echo "$lang <br>";
$sql = "SELECT * FROM posts WHERE Language = '$lang'";
$getLangPosts = mysqli_query($con, $sql);
array_push($posts, mysqli_fetch_assoc($getLangPosts));
}
print_r($posts);
对于这个用户,语言是德语、意大利语、丹麦语和英语,但是$posts 数组只包含从第一种语言(德语)中找到的第一个帖子,有人可以帮忙吗?我正在尝试获取$userLangs 数组中每种语言的所有帖子。
它正在通过 foreach 循环,因为每次回显的 $lang 变量都会发生变化,但查询仍然无法正常工作。
感谢您的帮助!
【问题讨论】:
-
在 $userLangs 上使用 implode 并更改您的查询 WHERE Language IN.. 无需多次访问数据库,至于您的问题,每次迭代都会覆盖 $getLangPosts
-
这是一种非常缓慢的方法。加入表格并进行一次查找。
标签: php mysql arrays mysqli foreach