我有一些工作代码,其中使用了 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/