话说php中PDO驱动切换数据库问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了话说php中PDO驱动切换数据库问题相关的知识,希望对你有一定的参考价值。

PDO没有提供 select_db 方法?如何切换数据库?
每次切换数据库都 new PDO('mysql:库名=testdb;host=127.0.0.1',... );
这样重新new效率超低啊,
$pdo->select_db(); 木有咋整?

您好,您没弄好,再弄一次:1、PDO配置。打开php.ini配置文件,找到下图所示的配置信息,去掉要启用的PDO前面的“#”号即可。另外一种方式是直接在启动的wampserver中找到php扩展中的php_pdo_db.lib选项,重启wampserver服务器即可。2、如何利用PDO连接数据库。利用下面这条简单的语句即可连接数据库,$pdo=newPDO("mysql:host=localhost;dbname=php100","root",“");3、PDO中常用的函数及其解释如下。PDO::query()主要是用于有记录结果返回的操作,特别是SELECT操作PDO::exec()主要是针对没有结果集合返回的操作,如INSERT、UPDATE等操作PDO::lastInsertId()返回上次插入操作,主键列类型是自增的最后的自增IDPDOStatement::fetch()是用来获取一条记录PDOStatement::fetchAll()是获取所有记录集到一个中。4、下面通过一个简单的php代码示例来具体介绍如何使用PDO进行数据库操作。exec("insertintouser_list(uid,m_id,username,password)values(null,'3','testpdo','testpdo')");//使用查询语句$sr=$pdo->query("select*fromuser_list");//将查询的结果循环输出显示while($row=$sr->fetch())print_r($row);?> 参考技术A $dbh->query("use newdatabase");本回答被提问者和网友采纳

Laravel:PHP Artisan Migrate 抛出 PDO 异常:找不到驱动程序(Postgres)

【中文标题】Laravel:PHP Artisan Migrate 抛出 PDO 异常:找不到驱动程序(Postgres)【英文标题】:Laravel: PHP Artisan Migrate throws PDO Exception: Could not find driver (Postgres) 【发布时间】:2017-08-02 15:11:19 【问题描述】:

操作系统: Ubuntu 16.10

服务器: Nginx

数据库: PostgreSQL 9.5.4

Laravel 5.4

尝试执行我的数据库迁移,但php artisan migrate 抛出以下错误:

[照亮\数据库\查询异常] 找不到驱动程序:(SQL select * from information_schema.tables where tables_schema = username and table_name = migrations)

接着是第二条消息说明

[PDO异常]

找不到驱动程序

我做了以下事情:

    验证我安装了php-pgsql的最新版本 取消注释 /etc/php/7.0/fpm/php.ini 中与 php_pdo_pgsql.dll 相关的行 多次重启 posgtresql 和 nginx

目前,当我运行 php -i 时,我得到的 PDO 部分的输出是

PDO 支持 => 启用

PDO 驱动程序 => pgsql

pdo_pgsql 部分产生

PostgreSQL(libpq) 版本 =>9.5.4

模块版本 =>7.0.15-0ubuntu0.16.10.4

然后 pgsql 部分返回

PostgreSQL(libpq) 版本 = 9.5.4

PostgreSQL(libpq) => x86_64-pc-linux-gnu 上的 PostgreSQL 9.5.4,由 gcc (Ubuntu 6.1.1-11ubuntu12) 6.1.1 编译 20160805,64 位多字节字符 支持 => 启用

SSL 支持 => 启用

活动持久链接 => 0

活动链接 => 0

但尽管如此,仍然得到同样的错误。我认为这可能是权限问题,但以 root 或 www-data 身份运行命令具有相同的结果。

【问题讨论】:

如果你使用的是php-fpm,除了重启web服务器(nginx/apache)之外,你需要重启它 【参考方案1】:

你需要定义你的 .env 文件

在 your.env 文件中,您需要指定您使用的数据库(MySQL、SQLite、Postgres)并指定您的数据库用户名和密码

APP_ENV=local
APP_KEY=base64:gqaCpjbEfukDr5As7EnrqRzi5PSho1rOS/q2H0E+HOs=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=YOUR_DB_NAME
DB_USERNAME=YOUR_USERNAME
DB_PASSWORD=YOUR_PASSWORD

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=

在使用迁移时运行这些命令总是好的

composer dump-autoload
php artisan cache:clear
php artisan view:clear

【讨论】:

如果你需要我可以帮助你通过teamviewer,你可能犯了一些小错误,但如果你看不到,总是很难分辨出什么问题【参考方案2】:

已解决:

确保在这种情况下您已经运行

php artisan cache:clear php artisan config:cache

我以为我在每个关键步骤都这样做了,但是再次运行这两个命令使我能够进行迁移并使网站正常运行。不过,感谢 lewis4u 的帮助。

【讨论】:

【参考方案3】:

我也遇到过同样的情况, 按顺序尝试以下,

1) install the postgre extensions for php, those are:
   php-(YOUR_VERSION)-pgsql, and php-pgsql.
2) enable pgsql extensions in your php.ini file, basically, 
   uncomment the the extensions. 
3) restart the apache server(or nginx).
4) check that extensions are enable using phpinfo() or any else tool.
5) set a password for (in instance) the postgres user in postgreSQL 
   server, this is a very important step.

登录 psql shell:

sudo su - postgres
\password postgres

输入密码并确认。

现在,设置您的 .env 文件并重试。

【讨论】:

【参考方案4】:

你应该安装 PHP pdo

sudo apt upgrade 
sudo apt install php-pgsql

【讨论】:

以上是关于话说php中PDO驱动切换数据库问题的主要内容,如果未能解决你的问题,请参考以下文章

甲骨文,PDO_OCI 与 OCI8

tp5连接SQLServer数据库及多个数据库切换-靳宇灵

Pdo总结

在 PHP 中到处使用准备好的语句? (PDO)

mysql连接选mysqli还是PDO

Javascript 到 PHP PDO 到 MySQL 查询返回空