这是我的sql连接代码
$config['db'] = array('host' => 'localhost', 'username' => 'root', 'password' => '', 'dbname' => 'reputize');
try
{
$db = new PDO('mysql:host='.$config['db']['host'].';dbname'.$config['db']['dbname'], $config['db']['username'], $config['db']['password']);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
echo "Database connected successfully";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
这是我用来从表中获取数据的代码
$query = $db->query("select * from metaTags where filename='index'");
while ($row = $query->fetch(PDO::FETCH_ASSOC))
{
$ptitle=$row['MetaTitle'];
$desc=$row['MetaDisc'];
$kwords=$row['MetaKwd'];
}
但错误仍在显示
在第14行的C:\ xampp \ htdocs \ template OOP \ include \ class \ websiteClasses.php中的非对象上调用成员函数query()
我在这里和其他网站上尝试了很多解决方案,但没有用。 请帮我解决这个问题
答案 0 :(得分:2)
您在此处遇到错误dbname'.$config['db']['dbname']
应该是dbname='.$config['db']['dbname']
答案 1 :(得分:1)
您忘了在dbname之后添加'='。
您的配置应如下所示
dbname='.$config['db']['dbname']
从您的评论中,我了解您的'$ db'变量必须声明为其他函数可访问。请在查询数据库之前检查$ db是否有有效的数据库连接。
我通常使用下面的代码来连接和获取我的游戏项目的数据。
function getDbConnection()
{
$pdo = null;
try
{
$pdo = new PDO("mysql:host=" . HOST . ";dbname=" . DBNAME,USERNAME,PWD);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch(PDOException $pe)
{
die("Sorry! Could not connect to database " . DBNAME. ": " . $pe->getMessage());
}
return $pdo;
}
function getData($qry)
{
$res = null;
try
{
if(!empty($qry))
{
$pdo = getDbConnection();
if(!empty($pdo))
{
$res = $pdo->query($qry);
}
}
}
catch(PDOException $pe)
{
throw $pe;
}
return $res;
}
注意:上述功能不健全。但它确实有效。