0

IIは、pdoを使用してMySQLデータをテーブルに表示するためのpdoステートメントに巻き込まれています。

私の構文は次のとおりです。

 $startdate=$_POST["start"];
 $enddate=$_POST["end"];
 $ttype=$_POST["ttype"];

$result = $db->query("SELECT cycletype,commenttype,adminstatus FROM v2loads where haulier= :haulier and :start < sarrive and :end> sarrive order by sarrive"); 
$result->bindParam(':haulier', $company, PDO::PARAM_STR); 
$result->bindParam(':start', $startdate, PDO::PARAM_STR); 
$result->bindParam(':end', $enddate, PDO::PARAM_STR); 
$result->execute;

次に、出力をフェッチしてみます

<table>
    <? while($row = $jobs->fetch(PDO::FETCH_ASSOC)) {  ?>
      <tr>
        <td>
          <? echo $row['cycletype'];?>
        <td>
        <td>
          <? echo $row['icommenttype];?>
        <td>
        <td>
          <? echo $row['adminstatus'];?>
        <td>
     </tr>
    <?  }  ?>
</table>

これにより、エラーが発生します。非オブジェクトでメンバー関数bindParam()を呼び出す

どんな援助もいただければ幸いです。敬具、

4

4 に答える 4

2

これは、クエリが解析されず、$resultがPDOステートメントオブジェクトではないことを意味します。エラーの詳細については、$ db-> errorInfo()をダンプしてください。

「:end>」の前にスペースが必要なのと同じくらい簡単かもしれません。

于 2012-12-12T12:41:11.520 に答える
2

プリペアドステートメントには使用しprepareないメソッドを使用します。query

と:

  • メソッド呼び出しには括弧が必要です。PHPの場合、これはプロパティになります。$result->execute();代わりに$result->execute;
  • $jobsではなく$resultを繰り返す必要があります。while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
于 2012-12-12T12:43:05.257 に答える
2

これはあなたのスクリプトです:

    $startdate=$_POST["start"];
    $enddate=$_POST["end"];
    $ttype=$_POST["ttype"];
    $result = $db->query("SELECT cycletype,commenttype,adminstatus FROM v2loads where    haulier= :haulier and :start < sarrive and :end> sarrive order by sarrive"); 
    $result->bindParam(':haulier', $company, PDO::PARAM_STR); 
    $result->bindParam(':start', $startdate, PDO::PARAM_STR); 
    $result->bindParam(':end', $enddate, PDO::PARAM_STR); 
    $result->execute;

これを次のように変更します。

  $startdate=$_POST["start"];
  $enddate=$_POST["end"];
  $ttype=$_POST["ttype"];
  $result = $db->prepare("SELECT cycletype,commenttype,adminstatus FROM v2loads where    haulier= :haulier and :start < sarrive and :end> sarrive order by sarrive"); 
  $result->bindParam(':haulier', $company, PDO::PARAM_STR); 
  $result->bindParam(':start', $startdate, PDO::PARAM_STR); 
  $result->bindParam(':end', $enddate, PDO::PARAM_STR); 
  $result->execute;

次に試してください:

  <table>
  <? while($row = $result->fetch(PDO::FETCH_ASSOC)) {  ?>
  <tr>
    <td>
      <? echo $row['cycletype'];?>
    <td>
    <td>
      <? echo $row['icommenttype];?>
    <td>
    <td>
      <? echo $row['adminstatus'];?>
    <td>
  </tr>
  <?  }  ?>
 </table>

の代わりにbindparam非オブジェクト..USEで使用しました。preparequery

于 2012-12-12T12:45:46.293 に答える
0

回答のフェッチセクションにタイプミスがあります。

<? echo $row['icommenttype];?>する必要があります<? echo $row['icommenttype'];?>

編集しようとしましたが、SOの最低6文字の編集ポリシーのために拒否されました。

于 2013-12-18T21:38:47.733 に答える