mysql catalog name_MySQL数据库用PDO建表或者运行时报错为 “SQLSTATE[3D000]: Invalid catalog name: 1046 No database s...

今天在调试一个扫雷的源码的时候,运行一下提示“SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected”这个意思;这个意思好像是PDO出现的问题,我的具体是因为数据库链接的问题,这很尴尬,不过呢,依然我把找到的相关答案一并写进文章里;

MySql ERROR 1046(3D000): No Database Selected

No DataBase Selected 翻译->意思是说没有选种数据库.

首先要建立数据库,在将表放入数据库中;都知道是没有选择数据库,就是没有回答到正题上,此刻贴出解决方法:

如果已经创建数据库那么就先执行以下‘use dbname’ 即可,没有创建可先创建数据库

贴下我的全部代码:

$serverName = 'localhost';

$userName= '';

$password = '';

$dbName = '';

try {

$dsn = 'mysql:host = $serverName;dbname = $dbName';

$conn = new PDO($dsn,$userName,$password); //初始化连接

//如果没有数据库创建数据库

$cql = "CREATE DATABASE if not exists $dbName";

$conn->exec($cql);

//添加使用数据库

$str = "use $dbName";

$conn->exec($str);

echo '数据库连接成功'.PHP_EOL;

// 设置异常模式

$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

//编写sql 语句

$sql = "CREATE TABLE if not EXISTS MyGuests(id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,

firstname VARCHAR(30) NOT NULL,

lastname VARCHAR(30) NOT NULL,

email VARCHAR(50),

reg_date TIMESTAMP )";

$conn->exec($sql);

echo "建表成功".PHP_EOL;

} catch (PDOException $e) {

echo $e->getMessage();

}

$conn = null;

PS:删除账户的时候也会出现此问题,具体的解决办法一并给出;

使用以下命令行删除账户:

delete from user where user='账户名';

出现:

ERROR 1046 (3D000): No database selected

因为是直接使用 SQL 语句的方式来删除账户,所以必须先选择 mysql 自身的数据库:

use mysql;

下面是一组测试数据的实例;

测试用PDO方式进行预处理语句插入数据,发现选定了数据库名,但是不生效的BUG(无效的数据库名),原来是前后有关系,在设定$dsn时,一定要把dbname=XXX放在第一个参数,即紧挨着$dsn = "mysql:正确写法:$dsn = "mysql:dbname=echarts;host=localhost;port:3306;charset=utf8";

所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!(有事儿请详询博主:博主电话以及微信18810292089)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值