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

Php 尝试使用PDO从mysql数据库检索数据时出错,php,mysql,pdo,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" cla

我试图使用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;
   ?>

第17行是

$result3 = $db->query($add);
第20行是

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

有什么想法吗?

这是如何使用准备好的陈述:

$add = $db->prepare(...);
$add->execute(array('id' = >$id));
while ($row = $add->fetch(PDO::FETCH_ASSOC)) ...
execute()
已执行查询
PDO::query()
用于直接触发未准备好的查询。您在这里不需要它。

首先修复此问题

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

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

是的,完成了,现在有错误,但输出仍然为空。是的,完成了,现在没有错误,但输出仍然为空blank@Aryan可能是由于查询的结果为空。请尝试在phpmyadmin中运行此查询?已获得输出。。非常感谢,但是显示了不正确的输出,在使用Mysql查询时,我得到了精确的输出,但是使用PDO时,我得到了错误的输出。你能检查一下这个问题吗
 $add -> execute(array('id'=>$id)); 
  //and remove 
 $result3 = $db->query($add);
 $add -> execute(array(':id'=>$id));
  while($result=$add->fetch(PDO::FETCH_ASSOC))