Ошибка с смещением строки, как решить?

Ссылка скопирована
3 марта 2026 1 ответ

Хочу сделать на своем сайте вывод правил которые разделены по категориями(главам), уже настроил таблицу и все такое, пытаюсь вывести заранее добавленное правило в БД и возникает ошибка с смещением типа строки

$queryCategoryOne = $mysql->query("SELECT * FROM rules WHERE category = 1"); $rulesCategoryOne = $queryCategoryOne->fetch_assoc();  <?php foreach($rulesCategoryOne as $rule): ?> <span class="rules-intro__text">     <?=$rule['content']?> </span> <?php endforeach; ?>

$queryCategoryOne = $mysql->query("SELECT * FROM rules WHERE category = 1"); $rulesCategoryOne = $queryCategoryOne->fetch_assoc(); <?php foreach($rulesCategoryOne as $rule): ?> <span class="rules-intro__text"> <?=$rule['content']?> </span> <?php endforeach; ?>

Дополнительно:

Ну вы понимаете что вы $rulesCategoryOne получили ассоциативный массив, потом по нему идете в цикле foreach и в результате у вас в $rule лежат значения столбцов из строки в дб?

Потому что у вас там одна запись
Ее нужно просто вывести без цикла

<span class="rules-intro__text">     <?=$rulesCategoryOne['content']?> </span>

<span class="rules-intro__text"> <?=$rulesCategoryOne['content']?> </span>

Либо фетчить все строки

$rulesCategoryAll = $queryCategoryOne->fetch_all(); // Я не знаю как у вас называется такой метод!!!   <?php foreach($rulesCategoryAll as $rule): ?> <span class="rules-intro__text">     <?=$rule['content']?> </span> <?php endforeach; ?>

$rulesCategoryAll = $queryCategoryOne->fetch_all(); // Я не знаю как у вас называется такой метод!!! <?php foreach($rulesCategoryAll as $rule): ?> <span class="rules-intro__text"> <?=$rule['content']?> </span> <?php endforeach; ?>

  • у меня там 4 записи
  • Mercury Effirium, после этой операции в переменной у вас будет ОДНА запись
    $rulesCategoryOne = $queryCategoryOne->fetch_assoc();

    $rulesCategoryOne = $queryCategoryOne->fetch_assoc();

  • Сергей delphinpro, допустим, а как по-другому реализовать?
  • <?php $queryCategoryOne = $mysql->query("SELECT * FROM rules WHERE category = 1");  while($rule = $queryCategoryOne->fetch_assoc()) { ?> <span class="rules-intro__text">     <?=$rule['content']?> </span> <?php } ?>

    <?php $queryCategoryOne = $mysql->query("SELECT * FROM rules WHERE category = 1"); while($rule = $queryCategoryOne->fetch_assoc()) { ?> <span class="rules-intro__text"> <?=$rule['content']?> </span> <?php } ?>

    Я так понимаю таким образом?

  • $rulesCategoryOne = $queryCategoryOne->fetch_all(MYSQLI_ASSOC);

    $rulesCategoryOne = $queryCategoryOne->fetch_all(MYSQLI_ASSOC);

  • Сергей delphinpro, да, мне помогло мое решение, спасибо что помогли разобраться с методом fetch_assoc. На не богатом личном опыте не знал что он фетчит только одеу строку, напишите мой код как решение, я отмечу решением как благодарность за то что помогли разобраться!
  • Хотя сам смысл переменной $rulesCategoryOne от меня ускользает.
    Я правильно понимаю, что там будет еще $rulesCategoryTwo и так далее?
  • и не забываем про htmlspecialchars()
  • Mercury Effirium, не надо ваше решение писать, это говнокод.
    А решением я и сам отмечу
  • Ипатьев, да это действительно так, я код переделал все работает, прочитайте мои превидущие комментарии, спасибо вам большое!
  • Ипатьев, напиши код который будет лучше, и объясните в чем проблемы у моего кода
  • Mercury Effirium, я написал. "прочитайте мои предыдущие комментарии"
  • Ипатьев, спасибо, я понял в чем плюсы вашего кода, удачного времени суток!
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Анна SEO Ответ

Чтобы решить проблему с смещением строки в вашем коде, вам следует следовать нескольким шагам:

1. Проверьте отступы: убедитесь, что все строки кода имеют одинаковые отступы. Например, если вы используете отступ в 4 пробела, то все строки кода должны иметь такой же отступ.

2. Используйте правильные символы пробелов: убедитесь, что вы используете только пробелы для создания отступов, а не символы табуляции. Использование комбинации пробелов и табуляции может вызвать смещение строк.

3. Проверьте закрытие скобок и кавычек: убедитесь, что все открывающие скобки и кавычки имеют соответствующие закрывающие. Неправильное закрытие скобок или кавычек также может вызвать смещение строк.

Пример кода с правильным отступом в PHP:

 

Если после выполнения этих шагов проблема с смещением строк все еще остается, пожалуйста, предоставьте больше информации о вашем коде и конкретной проблеме, чтобы мы могли помочь вам более точно.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно