Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用变量,替换SQL select语句和PHP Prepare语句。我哪里出错了?_Php_Mysql_Prepared Statement - Fatal编程技术网

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

使用变量,替换SQL select语句和PHP Prepare语句。我哪里出错了?,php,mysql,prepared-statement,Php,Mysql,Prepared Statement,我有一些工作代码,其中使用了SQL select语句。作为一个静态代码,它工作得很好,但是,我希望能够在其中使用变量。所以,在我的研究中,每个人都说应该使用PHP编写语句,以确保事情的安全。因此,我的旧代码如下所示: /*** MY OLD WORKING CODE ***/ /*** SQL Query ***/ $sql = "SELECT tickets.ref AS `Ticket Number` ...... .....BLAH.........

我有一些工作代码,其中使用了SQL select语句。作为一个静态代码,它工作得很好,但是,我希望能够在其中使用变量。所以,在我的研究中,每个人都说应该使用PHP编写语句,以确保事情的安全。因此,我的旧代码如下所示:

    /*** 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中,与旧的mysql_查询不同,后者返回的结果资源需要与mysql_fetch_*循环


嗨,迈克尔。谢谢你。我试着改变我的代码,但仍然不起作用。SQL语句与:NAME和:DAYS完全相同。实际的原始状态使用“nameiwantuse”,注意引号。。所以我必须在那里做点什么才能让名字起作用吗?另外,bindparam,我还看到您可能需要指定一个字符串值?简而言之,新代码给了我一个空白屏幕。。旧代码返回结果。对如何调试有什么建议吗?感谢我得到的错误似乎与我的SELECT语句中的变量有关PHP解析错误:语法错误,第15行E:\test.PHP中的意外T_变量
// Following fetchAll(), $MySQLQuery is a 2D array containing your rowset.
foreach ($MySQLQuery as $row){ 
 echo "<tr>"; 
  echo "<td>".$row['Ticket Number']."</td>"; 
   ETC.........
}