Задать вопрос
Lumore
@Lumore
Front-end developer

Правильно ли я делаю запрос SQL с помощью mysqli ?

$mysqli = new mysqli('localhost', 'root', '', 'system');

function get_posts() {
	global $mysqli;
	$sql = "SELECT * FROM posts";
	$result = $mysqli->query($sql);
	$result = mysqli_fetch_assoc($result);
	return $result;
}

Потом вывожу:
$posts = get_posts();
foreach($posts as $post) {
	echo '
	<div class="post">
		<div class="post-author"><a href="/profile.php?id='.$post['author-id'].'">'.$post['author-name'].' '.$post['author-surname'].'</a></div>
	</div>
	';
}

В итоге выводятся символы:
1 1
1 1
� �
� �
0 0

У меня был такой вопрос, думал дело в кодировке, но с ней все в порядке.
  • Вопрос задан
  • 2235 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@tushev
Так mysqli_fetch_assoc() извлекает только один ряд, а не всю выборку! Если хотите получить всю выборку - надо крутить вызов mysqli_fetch_assoc в цикле. Типа того
while ($row = $result->fetch_assoc()) {
   ....
}
А вы извлекаете один ряд, а потом пытаетесь крутить по нему цикл, думая что крутите его по записям, а на самом деле, цикл у вас крутиться по полям одной первой записи.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Попробуй сразу после коннекта сделать $mysqli->set_charset('ваша кодировка');

Есть вариант, что не указываешь кодировку в HTTP заголовке Content-Type
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Неправильно.
Правильно будет так:
1. пишем в адресной строке браузера mysqli_fetch_assoc
2. В открывшемся окне переходим по первой ссылке
3. Внимательно читаем.
4. Думаем.
5. Смотрим примеры.
6. Пишем правильный код.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽