PHP PDO setAttribute和错误处理
我只是对PDO有点困惑。为set属性charset utf8和处理数据库错误编写这样的函数是否正确PHP PDO setAttribute和错误处理,php,mysql,pdo,character-encoding,Php,Mysql,Pdo,Character Encoding,我只是对PDO有点困惑。为set属性charset utf8和处理数据库错误编写这样的函数是否正确 <?php $dsn = 'mysql:dbname=testdb;host=127.0.0.1'; $user = 'dbuser'; $password = 'dbpass'; try { $dbh = new PDO($dsn, $user, $password array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
<?php
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
try {
$dbh = new PDO($dsn, $user, $password array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
谢谢。试试这个
$link = new PDO("mysql:host=localhost;dbname=DB;charset=UTF8");
或者这也不错
link = new PDO('mysql:host=myhost;dbname=mydb', 'login', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
其他一切都好。试试这个
$link = new PDO("mysql:host=localhost;dbname=DB;charset=UTF8");
或者这也不错
link = new PDO('mysql:host=myhost;dbname=mydb', 'login', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
其他一切都正常。除了一个简单的语法错误之外,你所做的一切都是正确的。你漏掉了一个逗号
$dbh = new PDO($dsn, $user, $password ,array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
//^----- You missed adding this
除了一个简单的语法错误,你所做的是正确的。你漏掉了一个逗号
$dbh = new PDO($dsn, $user, $password ,array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
//^----- You missed adding this
只有在旧的PHP安装(早于PHP/5.3.6)中才推荐您设置编码的方法,但不是很旧-我不记得确切的版本,但您必须在真正旧的版本中手动运行
SET NAMES
查询,而PDO::MYSQL\u ATTR\u INIT\u命令尚未实现
建议的方法是以下中的适当参数:
字符集
字符集。有关详细信息,请参阅字符集概念文档
更多信息
在PHP5.3.6之前,该元素被默默忽略。相同的
行为可以通过
PDO::MYSQL\u ATTR\u INIT\u命令
驱动程序选项
最后,您可以在构造函数中一次性设置所有设置。无需运行单独的setAttribute()
调用。只建议在旧的PHP安装(早于PHP/5.3.6)中使用设置编码的方法但不是很老—我不记得确切的版本,但您必须在真正旧的版本中手动运行设置名称
查询,而在这些版本中,PDO::MYSQL\u ATTR\u INIT\u命令
尚未实现
建议的方法是以下中的适当参数:
字符集
字符集。有关详细信息,请参阅字符集概念文档
更多信息
在PHP5.3.6之前,该元素被默默忽略。相同的
行为可以通过
PDO::MYSQL\u ATTR\u INIT\u命令
驱动程序选项
最后,您可以在构造函数中一次性设置所有设置。无需运行单独的setAttribute()
调用。刚刚看到接受的答案。如果你遇到一个解析错误,不要浪费每个人的时间忽略它,问一些完全无关的问题。这个问题似乎离题了,因为它是关于一个简单的语法错误。@阿尔瓦罗。维卡里奥,我的朋友们,我真的对这个函数感到困惑。这与分析错误无关。现在我开始更好地了解PDO是如何工作的。谢谢你的时间。刚刚看到接受的答案。如果你遇到一个解析错误,不要浪费每个人的时间忽略它,问一些完全无关的问题。这个问题似乎离题了,因为它是关于一个简单的语法错误。@阿尔瓦罗。维卡里奥,我的朋友们,我真的对这个函数感到困惑。这与分析错误无关。现在我开始更好地了解PDO是如何工作的。谢谢你抽出时间。