尝试使用PDO从mysql数据库检索数据时出错

时间:2012-10-15 05:53:22

标签: php mysql pdo

我正在尝试使用PDO从mysql数据库中检索数据但我收到了错误。

这是代码

 <form id="form" action="sum1.php" method="post">
 <td><p align="center"> IDNO : <input type="text" name="id" id="id" maxlength="10"</p></td>
 <input type="submit" id="submit" class='btnExample' value="Click here to get your Result">
  </form> 
  <?PHP 
  $dbhost     = "localhost";
  $dbname     = "demo";
  $dbuser     = "admin";
  $dbpass     = "123456";
  $db = new PDO("mysql:host=$dbhost;dbname=$dbname", "$dbuser", "$dbpass");
  $id = $_POST['id']; 
  $add = $db->prepare("SELECT SUM(tech) AS tech4 FROM (
  (SELECT SUM(tm) AS tech FROM jbit WHERE htno > :id)
  UNION ALL
  (SELECT SUM(tm) AS tech FROM hmm WHERE htno > :id))t1");
  $add -> execute(array('id'=>$id));
  $result3 = $db->query($add);
  echo " <center><table id='mytable' cellspacing='0'  border=3 align=center> 
  <tr><TH scope='col'>Total Marks</TH> </tr><center>"; 
  while ($row1 = $result3->fetch(PDO::FETCH_ASSOC))
  {
   echo "<tr>"; 
   echo "<td align=center>" . $row1['tech4']. "</td>";
   echo "</tr>";
   }
   $result3->closeCursor();
   $db = null;
   ?>

错误我正在

Warning: PDO::query() expects parameter 1 to be string, object given in /home/nhtsoft/public_html/engineershub/sum1.php on line 17

Fatal error: Call to a member function fetch() on a non-object in /home/nhtsoft/public_html/engineershub/sum1.php on line 20

第17行是

$result3 = $db->query($add);

第20行是

while ($row1 = $result3->fetch(PDO::FETCH_ASSOC))

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这是如何使用预准备语句:

$add = $db->prepare(...);
$add->execute(array('id' = >$id));
while ($row = $add->fetch(PDO::FETCH_ASSOC)) ...

execute()已经执行了查询。 PDO::query()用于直接触发未准备好的查询。你在这里不需要它。

答案 1 :(得分:1)

首先解决这个问题

 $add -> execute(array('id'=>$id)); 
  //and remove 
 $result3 = $db->query($add);

并使用

 $add -> execute(array(':id'=>$id));
  while($result=$add->fetch(PDO::FETCH_ASSOC))