- Изучаю PDO столкнулся с ошибкой SQLSTATE[3D000]
- Saved searches
- Use saved searches to filter your results more quickly
- SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected. #224
- SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected. #224
- Comments
- SQLSTATE [3D000]: неверное имя каталога: 1046 База данных не выбрана
- Решение
- Другие решения
Изучаю PDO столкнулся с ошибкой SQLSTATE[3D000]
код ошибки
Fatal error: Uncaught PDOException: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected in C:\xampp\htdocs\app\database\database.php:14 Stack trace: #0 C:\xampp\htdocs\app\database\database.php(14): PDOStatement->execute() #1 thrown in C:\xampp\htdocs\app\database\database.php on line 14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
require 'conect.php'; function tt($value){ //функиция вывода значений в читаемом виде echo ''
; print_r($value); echo ''
; } $sql = "SELECT * FROM users";// выбираем все данные с таблицы $query = $pdo->prepare($sql);// подготовка запроса $query->execute();// запуск запроса на выполнение $errinfo = $query->errorInfo();// получаем ошибки if($errinfo[0] !== PDO::ERR_NONE){// выводим ошибки echo $errinfo[2]; exit(); } $data = $query->fetch(); tt($data); ?> файл conect.php // настройки подключения $driver ='mysql'; $host = 'localhost'; $db_name = 'dinamic-site'; $db_user = 'root'; $db_pass = ''; $charset = 'utf8'; $options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]; // подключение к db try{ $pdo =new PDO( "$driver:host=$host;db_name=$db_name;charset=$charset", $db_user,$db_pass,$options ); } // исключения catch (PDOException $i){ die("Ошибка подключения к базе данных"); } ?>
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected. #224
SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected. #224
Comments
It seems that I can't reach the top level domain with landlord database connection.
However, tenant connection is working fine. But when I'm a top level domain it gives me
SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected (SQL: select * from `users` where `email` = isaacdarcilla@gmail.com and `users`.`deleted_at` is null limit 1)
database.php
'default' => env('DB_CONNECTION', 'tenant'), 'connections' => [ 'tenant' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => null, . . ], 'landlord' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => 'master', . . ], ],
APP_NAME=Laravel APP_ENV=local APP_KEY=base64:uSoRKgTycrSZ3tUV+jUg5SploFri6/KqnzbBSdZfjhQ= APP_DEBUG=true APP_URL=http://schoolaide.test LOG_CHANNEL=stack LOG_LEVEL=debug DB_CONNECTION=tenant DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=master DB_USERNAME=root DB_PASSWORD= .
Route::group(['middleware' => 'guest'], function () < Route::get('login')->name('login')->uses('Auth\LoginController@showLoginForm'); Route::post('login')->name('login.attempt')->uses('Auth\LoginController@login'); Route::get('register')->name('register')->uses('Auth\RegisterController@showRegisterForm'); Route::get('forgot/password')->name('forgot.password')->uses('Auth\ResetPasswordController@showForgotForm'); Route::post('register')->name('register.attempt')->uses('Auth\RegisterController@register'); Route::post('forgot/password/sendEmail')->name('forgot.password.email')->uses('Auth\ResetPasswordController@sendEmail'); Route::get('register/onboarding/')->name('register.onboarding')->uses('Auth\RegisterController@showOnboarding'); Route::post('register/verification')->name('register.verification')->uses('Auth\RegisterController@verify'); Route::put('register/verification/resend/')->name('register.resend')->uses('Auth\RegisterController@resend'); >); Route::middleware('tenant')->group(function() < >); Route::group(['middleware' => 'auth'], function () < Route::get('/')->name('dashboard')->uses('DashboardController'); >); Route::get('logout')->name('logout')->uses('Auth\LoginController@logout');
multitenancy.php
use Illuminate\Broadcasting\BroadcastEvent; use Illuminate\Events\CallQueuedListener; use Illuminate\Mail\SendQueuedMailable; use Illuminate\Notifications\SendQueuedNotifications; use Spatie\Multitenancy\Actions\ForgetCurrentTenantAction; use Spatie\Multitenancy\Actions\MakeQueueTenantAwareAction; use Spatie\Multitenancy\Actions\MakeTenantCurrentAction; use Spatie\Multitenancy\Actions\MigrateTenantAction; use Spatie\Multitenancy\Models\Tenant; return [ /* * This class is responsible for determining which tenant should be current * for the given request. * * This class should extend `Spatie\Multitenancy\TenantFinder\TenantFinder` * */ 'tenant_finder' => Spatie\Multitenancy\TenantFinder\DomainTenantFinder::class, /* * These fields are used by tenant:artisan command to match one or more tenant */ 'tenant_artisan_search_fields' => [ 'id', ], /* * These tasks will be performed when switching tenants. * * A valid task is any class that implements Spatie\Multitenancy\Tasks\SwitchTenantTask */ 'switch_tenant_tasks' => [ Spatie\Multitenancy\Tasks\SwitchTenantDatabaseTask::class, ], /* * This class is the model used for storing configuration on tenants. * * It must be or extend `Spatie\Multitenancy\Models\Tenant::class` */ 'tenant_model' => Tenant::class, /* * If there is a current tenant when dispatching a job, the id of the current tenant * will be automatically set on the job. When the job is executed, the set * tenant on the job will be made current. */ 'queues_are_tenant_aware_by_default' => true, /* * The connection name to reach the tenant database. * * Set to `null` to use the default connection. */ 'tenant_database_connection_name' => 'tenant', /* * The connection name to reach the landlord database */ 'landlord_database_connection_name' => 'landlord', /* * This key will be used to bind the current tenant in the container. */ 'current_tenant_container_key' => 'currentTenant', /* * You can customize some of the behavior of this package by using our own custom action. * Your custom action should always extend the default one. */ 'actions' => [ 'make_tenant_current_action' => MakeTenantCurrentAction::class, 'forget_current_tenant_action' => ForgetCurrentTenantAction::class, 'make_queue_tenant_aware_action' => MakeQueueTenantAwareAction::class, 'migrate_tenant' => MigrateTenantAction::class, ], /* * You can customize the way in which the package resolves the queuable to a job. * * For example, using the package laravel-actions (by Loris Leiva), you can * resolve JobDecorator to getAction() like so: JobDecorator::class => 'getAction' */ 'queueable_to_job' => [ SendQueuedMailable::class => 'mailable', SendQueuedNotifications::class => 'notification', CallQueuedListener::class => 'class', BroadcastEvent::class => 'event', ], ];
Top level domain
Sub domain which I was able to login
The text was updated successfully, but these errors were encountered:
SQLSTATE [3D000]: неверное имя каталога: 1046 База данных не выбрана
Я пытаюсь вставить данные в одну из 3 таблиц в базе данных, используя PDO. Когда я вызываю функцию вставки ниже, и получаю ошибку: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected.
Решение
В вашем коде я не видел, где и когда вы выбрали БД. увидеть этот для получения дополнительной информации.
Но, чтобы быть ясно, это то, что я, имея в виду
$conn = new mysqli($servername, $username, $password, $dbname);
как вы можете видеть, последняя переменная — это имя базы данных.
Другие решения
Вероятно, выходя на конечности здесь.
Мне кажется, что вы не создали ни одной из переменных / массивов для вашего соединения или неправильно настроены. (В вашем вопросе недостаточно кода).
Пример # 1 Подключение к MySQL
Пример # 2 Обработка ошибок подключения
query('SELECT * from FOO') as $row) < print_r($row); >$dbh = null; > catch (PDOException $e) < print "Error!: " . $e->getMessage() . "
"; die(); > ?>
Кроме того, глядя на «изображение» вашего кода, мне кажется, что вы используете обычные кавычки вокруг столбцов, а не галочки. Те два разных животных в целом.
INSERT INTO Students ('RIN', 'First Name', 'Last Name' .
и наличие пробелов между словами, где да; клещи должны быть использованы.
Поэтому вам нужно изменить свой код так, чтобы он читался как
INSERT INTO Students (`RIN`, `First Name`, `Last Name` .
и изменение кавычек на галочки, как указано выше для всех других имен столбцов. Я не собирался все здесь печатать.
Вам также необходимо проверить наличие ошибок с исключениями в DSN. Использование того, что у вас есть сейчас, недостаточно.
Пример # 1 Создайте экземпляр PDO и установите режим ошибки
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); > catch (PDOException $e) < echo 'Connection failed: ' . $e->getMessage(); > ?>
- Убедитесь, что вы выбрали (и создали) правильную базу данных / таблицу и действительно создали все эти столбцы, используя правильные типы и длины.
Если вы получаете ошибки из-за чего-то, на что может жаловаться MySQL (например, апострофы), вам нужно будет экранировать ваши данные; что-то, что вы должны делать в любом случае.
Обратитесь к следующему и используйте подготовленное утверждение: