pdo成员函数查询错误即将到来

时间:2015-12-30 17:43:55

标签: php pdo

I am getting Call to a member function query() on a non-object in G:\PleskVhosts\angelsoftweb.com\angelunitrax.angelsoftweb.com\header.php on line 116 

db.php中

<?php
$servername = "########";
$username = "########";
$password = "########";
$dbh = "rfid";
try {
$conn = new PDO('mysql:host=localhost;dbname=$dbh', $username, 
$password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'Error: ' . $e->getMessage();
}
?>

的header.php

<?php

foreach($sql=$conn->query("SELECT * FROM header_section") as $st) {
echo'
<div class="col-sm-2 col-md-2">
<ul style="margin-top: 13px;">
<li><a href="callus.php"><span style="margin-left:5px; color:white; 
font-size:16px; font-weight:bold;"><b>'.$st['call_us_name'].'</b></span>   
<span style="margin-left:5px; color:white; font-size:16px;
font-weight:bold;">'.$st['number'].'</span></a></li>
</ul>
</div>';
}

?>

我试图解决这个问题,但没有得到什么问题,有人帮助我尽快解决这个问题......

2 个答案:

答案 0 :(得分:0)

首先,请在问题中指明哪一行是116,如果我们能看到确切的算子,那么回答会更容易。

通常在未正确创建连接对象时会发生此错误。 尝试将错误模式设置为异常并将其放在try..catch块中。

编辑:$conn header.php来自db.php的地方并不十分清楚。 $pdo中的数据库处理程序为{{1}}

答案 1 :(得分:0)

问题是此行中的变量插值

'mysql:host=localhost;dbname=$dbh'

将单引号'替换为双引号"

您的脚本将该行中的变量作为字符串。

该行应该如下所示

"mysql:host=localhost;dbname=$dbh"

你的db.php看起来像这样

<?php
$servername = "########";
$username = "########";
$password = "########";
$dbh = "rfid";
try {
$conn = new PDO("mysql:host=localhost;dbname=$dbh", $username, 
$password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'Error: ' . $e->getMessage();
}