php - 使用变量,替换 SQL select 语句和 PHP Prepare 语句。我哪里出错了?

标签 php mysql prepared-statement

我有一些工作代码,其中使用了 SQL 选择语句。作为一段静态代码,它工作得很好,但是,我希望能够在其中使用变量。所以,在我的研究中,每个人都说你应该使用 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();

我的新代码,我试图开始工作.. 似乎什么也没做。我知道我并不太了解它,但我只是无法掌握我应该将哪个变量插入我的 FOREACH 循环……或者我是否真的完全正确地获得了 PHP Prepare 语句?

有什么建议吗?

    /*** 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();

谢谢

最佳答案

您几乎已经拥有它,只是您不应该在循环中调用 query()。结果集已被提取到 $MySQLQuery 中。 fetchAll() returns a 2D array ,与旧的 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.........
} 

关于php - 使用变量,替换 SQL select 语句和 PHP Prepare 语句。我哪里出错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12764187/

相关文章:

包含数组的 PHP 常量?

php - 如何使用该列上的输入字段更新该列

java - 如何在 Android 平台上的 SQLite 中创建准备好的 SELECT 语句

php - 从不同的数据库中选择两个或多个表

Mysqlimport 不适用于 ubuntu 14.04

java - 无法将值传递给PreparedStatement - 最后第五个参数被跳过

php - 参数化 PDO 查询和 `LIMIT` 子句 - 不工作

php - 在带有 .htaccess 的文件名之前给出 param 并提供给 php

javascript - $http.post 在 AngularJS 中不起作用

php - 如何仅在手机、平板电脑等设备上显示 Adsense 广告(在桌面上隐藏)