У меня возникают проблемы с mysqli_query изнутри цикла foreach, сначала я получаю строку из таблицы, а затем разделяю ее на массив. Затем я пытаюсь выполнить цикл через массив и вызывать запрос внутри цикла.Mysqli_query внутри цикла foreach
$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);
для этого пользователя langusges является немецким, итальянским, датским и английским, но $posts
массива содержит только первый пост нашел первого язык (немецкого), может кто-нибудь помочь? Я пытаюсь получить все сообщения для каждого языка в массиве $userLangs
.
Просматривает цикл foreach
, так как переменная $lang
меняется, но запрос все еще не работает должным образом.
Спасибо за помощь!
Использование взрываются на $ userLangs и изменить свой запрос WHERE Язык IN .. Нет необходимости ударить дб несколько раз, по вашей проблеме, $ getLangPosts перезаписывается для каждой итерации – Mihai
Это очень медленный способ сделать это. Присоединитесь к столам и сделайте только один поиск. – Popnoodles