gpt4 book ai didi

php - 在 PDO 调用中使用 PHP 常量

转载 作者:可可西里 更新时间:2023-11-01 12:25:42 25 4
gpt4 key购买 nike

<?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, 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);
}
?>

The Console in OS X returns "[14-Aug-2011 15:59:59] PHP Notice: Use of undefined constant root - assumed 'root' in /Applications/MAMP/htdocs3/nettuts/PHP/PDO for Database Access/mysql_pdo_connect.php on line 20."

我已经“用谷歌搜索”并在这里找到了部分答案。所以我希望在这里完成。

TIA

最佳答案

你这样做:

$DBH = new PDO("mysql:host=localhost; dbname= sitename", root, root); 

应该是:

$DBH = new PDO("mysql:host=localhost; dbname= sitename", 'root', 'root'); 

带引号。否则 PHP 认为它是一些常量而不是字符串。但是,通过查看您的代码,我发现您已经定义了 constants 来访问数据库,所以您为什么不简单地这样做:

$DBH = new PDO('mysql:host='.DB_HOST.'; dbname='.DB_NAME, DB_USER, DB_PASSWORD); 

更新

我还看到您正在使用带有 PDO 的 MySQL。请注意为了safely use MySQL with PDO你必须 disable emulated prepared statements :

$DBH = new PDO('mysql:host='.DB_HOST.'; dbname='.DB_NAME.';charset=utf8', DB_USER, DB_PASSWORD);
$DBH->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

请注意,我还在 DSN 字符串中设置了编码(在本例中为 utf8)。我还想知道你是否真的需要代码中的常量,因为通常每个请求(到同一个数据库)你只需要一个连接,所以如果你只创建一次连接并通过与需要它的代码部分的连接。另请参阅我的 related question有关这方面的更多信息。

关于php - 在 PDO 调用中使用 PHP 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7060350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com