2012-10-06 72 views
1

我有一個使用在它一個SQL SELECT語句的一些工作代碼。作爲一個靜態的代碼,它的工作很好,但是,我希望能夠在其中使用變量。所以,在我的研究中,每個人都說你應該使用PHP Prepare語句來保證安全。所以,我的舊代碼看起來是這樣的:使用變量,替換SQL select語句和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準備發言的權利呢?

任何建議任何人嗎?

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

感謝

回答

0

你幾乎都擁有它,但你不應該被要求在循環query()。結果集已被提取到$MySQLQueryfetchAll() 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......... 
} 
+0

邁克爾喜。感謝那。我試圖改變我的代碼,但仍然無法正常工作。 SQL語句與:NAME和:DAYS完全相同。實際的原始階段使用'NAMEIWANTTU​​SE'(注意引號)..所以我必須在那裏做一些事情:名稱的工作?另外,bindparam,我也看到你可能需要指定一個字符串值?總之,新的代碼給了我一個空白的屏幕..舊的代碼,返回結果。有關如何調試的任何建議?由於 – Will

+0

林得到的錯誤似乎是在我的SELECT語句PHP解析錯誤與變量做:語法錯誤,意想不到的T_VARIABLE在E:\ test.php的第15和 – Will

+0

它的所有工作!謝謝 :) – Will