0

我正在尝试使用 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))

有任何想法吗?

4

2 回答 2

1

这是使用准备好的语句的方法:

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

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

于 2012-10-15T06:03:16.160 回答
1

首先解决这个

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

并使用

 $add -> execute(array(':id'=>$id));
  while($result=$add->fetch(PDO::FETCH_ASSOC))
于 2012-10-15T06:04:24.427 回答