1

SQLselectステートメントを使用する実用的なコードがあります。静的なコードとしてはうまく機能しますが、変数を使用できるようにしたいと思います。ですから、私の調査では、物事を安全に保つために、PHPのPrepareステートメントを使用する必要があると誰もが言っています。したがって、私の古いコードは次のようになります。

    /*** MY OLD WORKING CODE ***/ 
    /*** SQL Query ***/   
    $sql = "SELECT tickets.ref AS `Ticket Number` ......
    .....BLAH................INTERVAL 30 DAY) AND 
    organizations.name = 'NAMEIWANTTOUSE' ";

    /*** For Each Loop to Build Table ***/
    foreach ($dbh->query($sql) as $row){ 
     echo "<tr>"; 
      echo "<td bgcolor=89FF95 align=center>".$row['Ticket Number']."</td>"; 
       ETC..................
    } 
    $sql->closeCursor();

私の新しいコード、Imが機能しようとしていること..何もしていないようです。Imはそれほど遠くないことは知っていますが、FOREACHループにプッシュする必要のある変数を把握できません。または実際にPHPPrepareステートメントを取得した場合はどうでしょうか。

誰か提案はありますか?

    /*** MY NEW NOT WORKING CODE ***/ 
    /*** Variables ***/
    $NAME = 'NAMEIWANTTOUSE';
    $DAYS = '30';

    /*** Prepare the SQL Query ***/
    $stmt = $sql->prepare("SELECT tickets.ref AS `Ticket Number` .......
    ....BLAH................INTERVAL :DAYS DAY) AND
    organizations.name = :NAME ");

    $stmt->bindParam(":DAYS", $DAYS);
    $stmt->bindParam(":NAME", $NAME);
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    $stmt->execute();

    /*** Put each return from SQL into a Variable? ***/
    $MySQLQuery = $stmt->fetchAll();

    /*** For Each Loop to Build Table ***/
    foreach ($dbh->query($MySQLQuery) as $row){ 
     echo "<tr>"; 
      echo "<td>".$row['Ticket Number']."</td>"; 
       ETC..................
    } 
    $sql->closeCursor();

ありがとう

4

1 に答える 1

0

query()ループで呼び出すべきではないことを除いて、ほとんどそれを持っています。結果セットはすでににフェッチされています$MySQLQuery。 でループオーバーする必要のある結果リソースを返した古い配列とは異なり、fetchAll()2D配列を返します。mysql_query()mysql_fetch_*()

// Following fetchAll(), $MySQLQuery is a 2D array containing your rowset.
foreach ($MySQLQuery as $row){ 
 echo "<tr>"; 
  echo "<td>".$row['Ticket Number']."</td>"; 
   ETC.........
} 
于 2012-10-06T21:56:38.457 に答える