2014-01-09 65 views
0

處理一個快速腳本以顯示數據庫中客戶的最近活動 - 我有腳本輸出結果,但是它輸出的內容令我困惑。PHP和MySQL查詢結果令人困惑

  <?php 
       //Search for customer recent history 
       $q = "SELECT * FROM txn_log WHERE customer_no = $customer_no ORDER BY datetime DESC LIMIT 3"; 
       $r = mysql_query($q) or die(mysql_error()); 

       while($row = mySQL_fetch_array($r)) { 
        $recent_history = ''; 

        $str .= '<a href="#" class="list-group-item">'; 
        $str .= ' <span class="badge">' . gmdate("Y-m-d\TH:i:s\Z", $row['datetime']) . '</span>'; 
        $str .= ' <i class="fa fa-check"></i> ' . $row['txn_id'] . ': ' . $row['txn_type'] . ' ' . $row['amount_dif']; 
        $str .= '</a>'; 

        echo $str; 
       } 

      ?> 

在我的數據庫中,我有一個測試客戶提供與之相關的三個記錄,開始於ID 2

我上面的查詢應該是在UNIX時間戳順序只輸出三個記錄中使用, 這應該產生以下順序的三個記錄=> ID2,ID3,ID4

它是什麼做的是輸出以下=> ID2,ID2,ID3,ID2,ID3,ID4

我不瞭解我做錯了什麼除了得到正確的結果之外,還要讓它產生前三個(ID2,ID2,ID3)。每次運行查詢時,結果都是一樣的。

回答

1

您正在使用$海峽=

等你的循環 第一次迭代,被呼應了$ str是ID2 第二次迭代,$海峽是呼應是ID2 + ID3 第三次迭代,$海峽被回顯是ID2 + ID3 + ID4

最後,它會看起來像ID2,ID2,ID3,ID2,ID3,ID4 希望幫助!

要解決此問題,請嘗試在循環開始時將變量聲明爲$ str =「」,然後您的回聲只會響應每個ID一次。

1

爲每個循環迭代重置$ str。 地址:

$str=""; 

$recent_history = '';

1

您需要使用mysql_fetch_assoc和echo循環外

幾件事情要記住,

安全必須是你的首要修道院檢查SQL注入字符並始終用查詢中的單引號括起變量。見下文

<?php 
     //Search for customer recent history 
     $customer_no = str_replace("'", '', $customer_no); 
     $q = "SELECT * FROM txn_log WHERE customer_no = '$customer_no' ORDER BY datetime DESC LIMIT 3"; 
     $r = mysql_query($q) or die(mysql_error()); 

     while($row = mySQL_fetch_assoc($r)) { 
      $recent_history = ''; 

      $str .= '<a href="#" class="list-group-item">'; 
      $str .= ' <span class="badge">' . gmdate("Y-m-d\TH:i:s\Z", $row['datetime']) . '</span>'; 
      $str .= ' <i class="fa fa-check"></i> ' . $row['txn_id'] . ': ' . $row['txn_type'] . ' ' . $row['amount_dif']; 
      $str .= '</a>'; 
     } 
      echo $str; 
    ?> 
0

Woops ......發現它..

DERP我雖然()

我正在收拾了錯誤的字符串! $recent_history = '';應該已經$str = '';

編輯:張貼,直到我提交了修正

感謝所有,我沒看到你們。 我絕對會保護腳本,我只是確保我可以做我想做的事情:)