Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: PDO не делает выбор SELECT
Покинул форум
Сообщений всего: 3
Дата рег-ции: Окт. 2018
Помог: 0 раз(а)
Здравствуйте. Подскажите где искать проблему,ибо сам уже не знаю,просмотрел всё что можно.
Пример из книги:
Кевин Янк "PHP и MySQL от новичка к профессионалу"
К базе данных подключается без ошибок,при выборке из таблицы в браузере пишет такую вот штуку:
Ошибка при выполнении запроса: SQLSTATE[3D000]: Invalid catalog name: 1046 Aucune base n'a йtй sйlectionnйe
Я конечно понимаю что каталог инвалид,но там какой может быть инвалид не понимаю. СпасибоОтредактировано модератором: armancho7777777, 09 Октября, 2018 - 14:48:06
Мелкий
Отправлено: 08 Октября, 2018 - 11:05:55
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Не могу прочитать вашу локаль. Но ошибка 1046 - No database selected
Парсер DSN в PDO весьма глупый сам по себе. И pdo_mysql ошибками за найденные странные параметры не плюётся.
Короче говоря, пробелов в параметрах строки подключения к mysql быть не должно.
"dbname = ijdb" - параметр "dbname " вместо "dbname"
"dbname= ijdb" - параметр "dbname" правильный, базу искать будем с названием " ijdb"
"dbname=ijdb" - только так.
Ну хоть после ; стоит обработка isspace, 'mysql:host=localhost; dbname=ijdb', - так можно
----- PostgreSQL DBA
топаз
Отправлено: 08 Октября, 2018 - 11:57:42
Новичок
Покинул форум
Сообщений всего: 3
Дата рег-ции: Окт. 2018
Помог: 0 раз(а)
Мелкий,у меня нет слов, заработало.Огромное Вам человеческое спасибо.
Я вот понять не могу,значит подключение к базе данных проходит,т.е. ошибку в блоке исключения не генерирует. А выборку из таблицы сделать не может.
Далее выходит с кодировками какая-то проблема:
Вот все шутки,которые есть в базе данных:
Зачем цыплёнок перешёл дорогу? Чтобы попасть на другую строну!
Кусок вывода из include 'jokes.html.php'; :
<body>
<p>Вот все шутки,которые есть в базе данных: </p>
<?php foreach ($jokes as $joke) : ?>
<blockquote>
<p> <?php echo htmlspecialchars ($joke,ENT_QUOTES,'UTF-8'); ?>
</p>
</blockquote>
<?php endforeach; ?>
</body>
Помощи не прошу чтобы не быть назойливым,поковыряюсь конечно,но и не отказываюсь если труда не составит ответить в какую сторону смотреть. Спасибо.
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
топаз пишет:
Я вот понять не могу,значит подключение к базе данных проходит
Тут такой фокус, что к mysql действительно возможно подключиться абстрактно, не к какой-то конкретной БД, а просто подключиться и уже затем, например, запросить список доступных баз и подключиться к какой-то из них.
Можно даже данные читать не указывая имя базы подключения, но тогда имя базы необходимо будет указывать в самом запросе:
Ну и откуда в базе добавлялись данные? Руками каким-то sql-клиентом или с другого скрипта? У mysql может быть выключена валидация UTF8 для текстовых полей, да и вообще там знатный бардак с разными кодировками вплоть до каждого отдельного столбца... То есть к сожалению нельзя исключать вероятности, что данные в самой базе сохранены в битой кодировке.
----- PostgreSQL DBA
топаз
Отправлено: 08 Октября, 2018 - 15:23:48
Новичок
Покинул форум
Сообщений всего: 3
Дата рег-ции: Окт. 2018
Помог: 0 раз(а)
Мелкий,ещё раз спасибо за ответ.Данные в БД заносились с другого скрипта.
Добавление charset результатов не принёс, кракозябры остались один-в-один одинаковыми. Заголовок не отправлялся,добавил,кракозябры преобразились в текст из БД,что и требовалось.
Но вывод самого HTML-файла <p>Вот все шутки,которые есть в базе данных: </p> ,стал выглядеть как:
��� ��� �����,������� ���� � ���� ������:
Голова вылезла- хвост застрял,хвост вылез-голова застряла.
Пищу для размышления Вы мне подкинули, поковыряюсь ещё )))))
Скажите,а если в принципе кодировку не указывать, я так понимаю, проблема может придти непонятно откуда,так? т.е. кодировку надо контролировать,или же есть какое-то универсальное решение. Какой бы вы совет дали при работе с кодировками?
P.S. блин,вот поражаешься порой,всё делаешь как написано,у них в книге значит вывод показан нормальный, а здесь же,непонятно что.Мистика
Мелкий
Отправлено: 08 Октября, 2018 - 16:57:17
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
топаз пишет:
Какой бы вы совет дали при работе с кодировками?
выставлять явно utf8 везде где только найдёте... И даже после этого всё равно придётся помнить об отличиях многобайтовых кодировок от строго однобайтовых - много тут граблей собирать можно, к сожалению.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.