OOP PHP开发PDO数据库连接传入options参数报错如何解决?
错误原因
问题出在PDO构造函数的第四个参数传值逻辑:
- 你定义的
$this->options本身就是符合要求的数组类型,但是你传参时给它包裹了双引号,PHP会强制把数组转为字符串"Array",既触发了数组转字符串的警告,也因为参数类型不匹配抛出了类型错误。 - 你前面传的用户名、密码外层的双引号也属于多余写法,只是因为这两个属性本身是字符串类型,强制套引号没有改变值类型,才没有触发报错。
修复方案
直接去掉$this->options外层的双引号即可,修改后的对应代码如下:
$this->connect = new PDO("mysql:host=$this->host; dbname=$this->database", $this->username, $this->password, $this->options);
修改后即可正常保留PDO配置项,同时不会触发报错。
内容的提问来源于stack exchange,提问作者Sibananda Sahu
相关产品推荐
相关产品推荐

