Я пытаюсь вставить данные в одну из трех таблиц в базе данных с использованием PDO. Когда я вызываю функцию вставки ниже и получаю ошибку: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected.
SQLSTATE [3D000]: Неверное имя каталога: 1046 База данных не выбрана
ответ
В вашем коде я не видел, где и когда вы выбрали db. см. this для получения дополнительной информации.
Но чтобы быть ясно, что это то, что я, имея в виду
$conn = new mysqli($servername, $username, $password, $dbname);
, как вы можете видеть, что последняя переменная является имя_бд.
Хорошо. Благодаря! Я исправил это, но теперь я получаю это: 'Предупреждение: PDO :: __ construct() ожидает, что параметр 4 будет массивом, строка указана в /Applications/XAMPP/xamppfiles/htdocs/websys/lab9/insert.php в строке 7 ' ' Фатальная ошибка: Вызов функции члена SetAttribute() на не-объект в /Applications/XAMPP/xamppfiles/htdocs/websys/lab9/insert.php по линии 8' фрагмент начинается в строке 5 –
вам нужно принять это как ответ и задать новый вопрос. попробуйте скопировать вставку кода в следующем вопросе вместо добавления изображения, а не полный запрос показан на картинке. – davejal
Вы видите, что вопросник использовал PDO. ** Не так ли? ** Так почему вы предлагаете использовать mysqli? – RiggsFolly
Возможно, выйдя на конечность здесь.
Мне кажется, что вы не создали ни одну из переменных/массивов для своего подключения или неправильно настроены. (Недостаточно кода, размещенного в вашем вопросе).
Из руководства по PDO связи http://php.net/manual/en/pdo.connections.php
Пример # 1 Подключение к MySQL
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?>
Пример # ошибки подключения 2 Обработка
<?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
foreach($dbh->query('SELECT * from FOO') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
Plus, глядя на "образ" ваш код, мне кажется, что вы используете обычные кавычки вокруг своих столбцов, а не тики. Это два разных животных в целом.
INSERT INTO Students ('RIN', 'First Name', 'Last Name' ...
и имеет пробелы между словами, где да; необходимо использовать клещи.
Таким образом, вам необходимо изменить свой код, чтобы читать
INSERT INTO Students (`RIN`, `First Name`, `Last Name` ...
и изменение котировок на клещах, как описано выше для всех остальных имен столбцов. Я не собирался вводить все здесь.
Вам также необходимо проверить ошибки с исключениями в DSN. Использование того, что у вас сейчас, недостаточно.
Пример # 1 Создание экземпляра PDO и установите режим ошибки
<?php
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
try {
$dbh = new PDO($dsn, $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
- Убедитесь, что вы выбрали (и создал) правильную базу данных/таблицу и что вы фактически создали все эти столбцы и использовали правильные типы и длины.
Если у вас возникли ошибки в отношении того, к чему может жаловаться MySQL (например, апострофы), вам нужно будет избежать ваших данных; то, что вы должны делать в любом случае.
Consult следующей команды и использовать подготовленное заявление:
- 1. SQLSTATE [3D000]: 1046 - База данных не выбрана
- 2. Получение ошибки как "SQLSTATE [3D000]: Недопустимое имя каталога: 1046 Не выбрана база данных"
- 3. Создать процедуру ERROR 1046 (3D000): не выбрана база данных
- 4. magento SQLSTATE [3D000]: Неверное имя каталога: 1046 Не выбрано ни одной базы данных
- 5. Недопустимое название каталога: 1046 База данных не выбрана
- 6. 1046: Не выбрана база данных?
- 7. Laravel: случайная ошибка: SQLSTATE [3D000]: недопустимое имя каталога: 1046 не выбран Нет базы данных
- 8. # 1046 - База данных не выбрана на phpMyAdmin
- 9. Ошибка MySQL: # 1046 - База данных не выбрана
- 10. django.db.utils.OperationalError: (1046, 'База данных не выбрана')
- 11. codeigniter 3.1 PDO mysql Номер ошибки: 3D000/1046 База данных не выбрана
- 12. MySQL «ERROR 1046 (3D000): не выбрана база данных» на запрос обновления
- 13. Ошибка Mysql - PDO - Недопустимое название каталога: 1046 База данных не выбрана
- 14. Ошибка PDO: не выбрана база данных
- 15. phpmyadmin - localhost.sql import - # 1046 - не выбрана база данных
- 16. База данных не выбрана
- 17. «База данных не выбрана»
- 18. ОШИБКА 1046 (3D000): Нет базы данных выбран при создании пользователя
- 19. «Не выбрана база данных» при выполнении процедур
- 20. Ошибка: «База данных не выбрана»
- 21. База данных MySQL Golang не выбрана
- 22. Mysql - База данных не выбрана
- 23. java.sql.SQLException: База данных не выбрана
- 24. php База данных не выбрана
- 25. База данных не выбрана phpmyAdmin
- 26. MySQL База данных не выбрана
- 27. PHP: База данных не выбрана
- 28. error: База данных не выбрана
- 29. Не выбрана база данных PHP
- 30. База данных «openpg» не существует. Серьезность: FATAL. Код: 3D000.
пожалуйста, не размещать в «образ» кода, но фактический код, чтобы мы могли видеть то, что эти цитаты , и покажите полный код, пока вы используете его для своих переменных. На ваш вопрос невозможно ответить. –
Я пробовал это делать, но, к сожалению, форматирование прикручивается, когда я это делаю, и становится нечитаемым. –
при отправке кода есть возможность форматировать его с помощью опции форматирования кода (если строки не отображаются в виде кода, попробуйте добавить пробелы к этой строке) – davejal