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 に答える