PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 9
index Отправлено: 01 Февраля, 2017 - 00:07:02 • Тема: Кодировка текста ошибок в php • Форум: Вопросы новичков

Ответов: 4
Просмотров: 517
ОК, спасибо!
index Отправлено: 27 Января, 2017 - 20:38:40 • Тема: mysqli_result перебор, не извлекая • Форум: Вопросы новичков

Ответов: 6
Просмотров: 574
T1grOK пишет:
index пишет:
Однако, функция fetch_assoc() удаляет из результата каждую новую полученную строку

С чего вы это взяли, fetch_assoc просто передвигает указатель, на который можно повлиять

http://php.net/manual/ru/mysqli-...lt.data-seek.php
А ведь Вы правы, я проверил — сделал первый проход, потом data_seek() и ещё один проход:
PHP:
скопировать код в буфер обмена
  1. while ($chapter = $chapters->fetch_assoc()){
  2.         echo "<option value='{$chapter['id']}'>{$chapter['title']}</option>";
  3.         }
  4. $chapters->data_seek(0);
  5. while ($chapter = $chapters->fetch_assoc()){
  6.         echo "<option value='{$chapter['id']}'>{$chapter['title']}</option>";
  7.         }
  8.  
Данные выводятся два раза, значит после первого прохода не удаляются, остаются на своих местах, как мне и нужно. Выходит, первый тест я сделал неправильно. Моя ошибка, прошу прощения за дезинформацию.
Спасибо за помощь, T1grOK.
index Отправлено: 27 Января, 2017 - 19:12:41 • Тема: Кодировка текста ошибок в php • Форум: Вопросы новичков

Ответов: 4
Просмотров: 517
Heavenanvil пишет:
Стесняюсь спросить, а зачем вы отключаете MySQL сервер?
Как вариант, чтобы было хоть немного понятно, пишите текст ошибки на английском.
Тестирую я так Улыбка Ну, а вдруг на хостинге база станет недоступна, как я узнаю, что проблема в этом, если вместо текста ошибки идут ромбики с вопросительными знаками?
Вот, пожалуйста, текст ошибки:
Цитата:
Ошибка №2002: ����������� �� �����������, �.�. �������� ��������� ������ ������ �� �����������.

И этот текст не я пишу, а похоже, сам php. А если не php, тогда я вообще не знаю, откуда он берётся не на английском языке Улыбка
index Отправлено: 26 Января, 2017 - 21:56:13 • Тема: mysqli_result перебор, не извлекая • Форум: Вопросы новичков

Ответов: 6
Просмотров: 574
3d_killer пишет:
зачем 2 раза перебирать не понятно....
http://php.net/mysqli_fetch_all
Это понятно, спасибо.
Но для меня всё-таки важно избежать дополнительных затрат памяти и процессорного времени. Поэтому вопрос остаётся в силе: Есть ли способ напрямую работать с mysqli_result, не нарушая его целостность?
index Отправлено: 26 Января, 2017 - 19:25:56 • Тема: mysqli_result перебор, не извлекая • Форум: Вопросы новичков

Ответов: 6
Просмотров: 574
3d_killer пишет:
присвой результат переменной и ее перебирай циклом foreach
Это два раза придётся перебирать, тратить время и память. Неужели нет способа работать напрямую с mysqli_result без удаления?
index Отправлено: 26 Января, 2017 - 17:59:06 • Тема: mysqli_result перебор, не извлекая • Форум: Вопросы новичков

Ответов: 6
Просмотров: 574
Всем привет.
Получаю данные из БД в формате "mysqli_result":
PHP:
скопировать код в буфер обмена
  1. $q = "SELECT id, parent_id, title FROM $DB_NAME.chapters;";
  2. if (($chapters = $mysqli->query($q)) === FALSE)
  3.         {
  4.         message_block('Ошибка', "Ошибка: {$mysqli->error}");
  5.         exit;
  6.         }

Обрабатываю этот результат функцией fetch_assoc():
PHP:
скопировать код в буфер обмена
  1. while ($chapter = $chapters->fetch_assoc())
  2.         {
  3.         ... chapter['id'] ...
  4.         }

Однако, функция fetch_assoc() удаляет из результата каждую новую полученную строку. В описании функции так и написано: "Извлекает результирующий ряд..." а мне нужно, чтобы он не извлекался, а оставлялся на месте. То есть, нужно оставить $chapters в неизменном виде для дальнейшей обработки.
Вопрос: Как организовать перебор результата, не извлекая (не удаляя) из него данные?
index Отправлено: 25 Января, 2017 - 18:47:42 • Тема: Чудеса конкатенации • Форум: Вопросы новичков

Ответов: 10
Просмотров: 661
А, ну то есть, ошибка редко возникает, понятно. Тогда навскидку, чтобы отловить её, я бы сделал лог двух переменных (до конкатенации и после). Перед каждой записью в БД записывать куда-нибудь в файл. Или можно прямо в базу данных, в таблице сделать дополнительное поле, где будет первая половинка, которая до конкатенации. Тогда можно будет заметить, когда именно возникает ошибка, а также станет ясно, в конкатенации эта ошибка или в базе данных.
index Отправлено: 25 Января, 2017 - 18:19:08 • Тема: Чудеса конкатенации • Форум: Вопросы новичков

Ответов: 10
Просмотров: 661
Граф пишет:
К сожалению, проблема не воспроизводится, я не могу вывести и посмотреть переменную $user_craft. (точнее могу, но она всегда в порядке).
Почему нельзя вывести эту переменную перед записью в БД?
index Отправлено: 25 Января, 2017 - 14:43:31 • Тема: Кодировка текста ошибок в php • Форум: Вопросы новичков

Ответов: 4
Просмотров: 517
Всем привет.
Функция $mysqli->connect_error возвращает текст ошибки в нужной мне кодировке (utf8) только если сервер MySQL работает. Если же сервер MySQL выключен, то текст ошибки выходит в неправильной кодировке (ромбики с вопросительными знаками).
Подскажите, пожалуйста:
1) Почему так происходит?
2) Как задать нужную кодировку для текста ошибки?

Вот часть текста программы:
PHP:
скопировать код в буфер обмена
  1.  
  2. header("Content-Type: text/html; charset=utf-8");
  3.  
  4. ...
  5.  
  6. $mysqli = new mysqli('localhost', 'root', 'root', $DB_NAME);
  7. if ($mysqli->connect_error)
  8.         {
  9.         message_block('Ошибка подключения к базе данных',
  10.                 "Ошибка подключения к базе данных $DB_NAME.<br/>Ошибка №{$mysqli->connect_errno}: {$mysqli->connect_error}");
  11.         }
  12.  

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB