我使用 XAMPP 3.2.1在 Windows 7 上使用 PDO ,我遇到了问题,即使它可以正常工作我的共享托管服务器。
的settings.php
<?php
define('DB_NAME', 'testdb'); //DB Name
define('DB_HOST', 'localhost'); //DB host
define('DB_USER','root'); //DB user
define('DB_PASSWORD', ''); //DB users password
?>
db.php中
<?php
require_once("settings.php");
$db = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8', DB_USER, DB_PASSWORD);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
?>
output.php
<?php
require_once("db.php");
function outPutPosts(){
return $db->query("select * from replies limit 35"); <-- this line
}
?>
它出现的错误:
注意:未定义的变量:db in 第10行的C:\ xampp \ htdocs \ schoolplatform \ output.php
致命错误:在null中调用成员函数query() 第10行的C:\ xampp \ htdocs \ schoolplatform \ output.php
非常感谢任何帮助:)
答案 0 :(得分:1)
这个问题是因为$ db不能直接在函数内部使用。你可以使用global关键字在你的函数中访问它,如下所示:
link's name
答案 1 :(得分:0)
db.php内部
<?php
require_once("settings.php");
function getConnection() {
global $db;
$db = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8', DB_USER, DB_PASSWORD);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
return $db;
}
?>
然后输出.php
<?php
require_once("db.php");
function outPutPosts(){
getConnection();
return $db->query("select * from replies limit 35");
}
?>
答案 2 :(得分:0)
您需要在后面的函数中定义变量$db
,如下所示:
<?php
require_once("db.php");
function outPutPosts(){
$db = getConnection(); // define the variable $db here
return $db->query("select * from replies limit 35");
}
?>