在PDO调用中使用PHP CONSTANTS
<?php # Nettuts Tutorial using PHP Data Objects (PDO),/**This file contains the database access information *This file also establishes a connection to mySQL *and selects the database. *Set the database access information as constants: **/ // print_r(PDO::getAvailableDrivers()); DEFINE('DB_USER','root'); DEFINE('DB_PASSWORD','root'); DEFINE('DB_HOST','localhost'); DEFINE('DB_NAME','sitename'); $php = "htmlspecialchars"; try { #MySQL with PDO_MYSQL // $DBH = new PDO("mysql:host={$php(DB_HOST)}; dbname={$php(DB_NAME)}",root,root}; $DBH = new PDO("mysql:host=localhost; dbname= sitename",root); $DBH->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); # UH-OH! Typed DELECT instead of SELECT! $DBH->prepare('DELECT name FROM people'); } catch (PDOException $e) { echo "I'm sorry,Dave. I'm afraid I can't do that."; file_put_contents('PDOErrors.txt',$e->getMessage(),FILE_APPEND); } ?>
我已经“谷歌搜索”并在此处找到了部分答案.所以我希望在这里完成. TIA
你做:
$DBH = new PDO("mysql:host=localhost; dbname= sitename",root); 应该是: $DBH = new PDO("mysql:host=localhost; dbname= sitename",'root','root'); 有报价.否则PHP认为它是一些常量而不是字符串.但是通过查看你的代码,我发现你已经定义了常量来访问数据库,所以你为什么不这样做呢: $DBH = new PDO('mysql:host='.DB_HOST.'; dbname='.DB_NAME,DB_USER,DB_PASSWORD); UPDATE 我也看到你正在使用MySQL与PDO.请注意,为了safely use MySQL with PDO你需要disable emulated prepared statements: $DBH = new PDO('mysql:host='.DB_HOST.'; dbname='.DB_NAME.';charset=utf8',DB_PASSWORD); $DBH->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 请注意,我还在DSN字符串中设置了编码(在我的情况下为utf8).我也想知道你的代码中是否真的需要常量,因为通常每个请求只需要一个连接(到同一个数据库),因此如果只创建一次连接并通过,则不需要让这些全局变量浮动与需要它的代码部分的连接.有关此内容的更多信息,请参阅我的related question. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |