2017-06-06 86 views
0

非对象错误这是我的SQL连接码呼叫一个成员函数查询()在PDO

$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'];  
} 

但错误不断表示

呼叫一个成员函数查询()一个非对象在C:\ XAMPP \ htdocs中\模板OOP \包括\类\ websiteClasses .php on line 14

我在这里和其他网站上尝试了很多解决方案,但没用。 请帮我解决这个问题

+0

是两个片段,你在同一文件中显示?如果没有,你是否包含连接文件? – Qirel

+0

你已经在使用支持**预处理语句**,你应该利用与占位符(预处理语句)参数化查询的API来保护你对数据库[SQL注入(http://stackoverflow.com/q/60174 /)! 开始使用['PDO :: prepare()'](http://php.net/pdo.prepare)。 – Qirel

+0

当您进行数据库连接时,您可能会遇到可能的错误 - 但是在进行实际查询时,您根本无法完成错误检查? _“我在这里和其他网站上尝试了很多解决方案,但没有用处。” - 所有您需要做的就是首先查明您的查询出了什么问题。如何做到这一点,在网上解释。 – CBroe

回答

2

你在这里dbname'.$config['db']['dbname']有一个错误应该是dbname='.$config['db']['dbname']

+0

对不起,我挂上等号,但我仍得到相同的错误 – Deepanshu

+0

我觉得$ DB变量不是在第二个代码知,它是同一个文件吗? $ db是否可以访问其他功能? –

+0

是的,它是入店因为我得到上运行的文件 – Deepanshu

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; 
} 

注意:上述功能不稳健。但它的作品。

+0

是的,它是入店因为我得到上运行的文件 – Deepanshu

+0

获取数据库连接成功消息数据库成功消息与变量作用域不同。请在文件和测试开始时全局声明$ db。 –

+0

我设置变量全球化,但错误仍 – Deepanshu

相关问题