2012-12-25 33 views
0

不知道什麼是腳本的前幾頁獲取已分配USER_ID給他們的當前活動的用戶的「文件夾」工作的問題檢索從SQL數據。PDO不是通過SELECT查詢

我試圖在這一個做的是相同的,但獲取的基礎上分配給他們我試圖獲取與分配給他們的文件夾中的ID文件USER_ID從SQL文件夾的信息,而不是像以前一樣。

下面是示例查詢: O =文件夾& FID = 0ec741fa-e708-4314-83c4-c05966a56110#/ New_Folder

O =文件夾正在通過folder.php索引!?。 PHP其用於所有的內部文件

& FID = 0ec741fa-e708-4314-83c4-c05966a56110是文件夾ID,而不是實際工作id作爲有在文件夾中的表ID的兩個字段和FID這是FID唯一地生成的用戶創建一個新文件夾,並分配ID自動作爲其AUTO_INCR +主鍵在表中。

這裏是PDO腳本

require ("sql/pdo.php"); 

    // Lets get user's folder information 
    $query = " SELECT * FROM files WHERE fid = ".$_REQUEST['fid']." "; 

    try 
    { 
     // These two statements run the query against your database table. 
     $stmt = $db->prepare($query); 
     $stmt->execute(); 
    } 
    catch(PDOException $ex) 
    { 
     // Note: On a production website, you should not output $ex->getMessage(). 
     // It may provide an attacker with helpful information about your code. 
     die("Failed to run query: " . $ex->getMessage()); 
    } 

    // Finally, we can retrieve all of the found rows into an array using fetchAll 
    $rows = $stmt->fetchAll(); 

?> 
<table width="100%"> 
    <?php foreach($rows as $row): ?> 
     <tr onclick="window.location = 'file.php?fid=<?php echo htmlentities($row['id'], ENT_QUOTES, 'UTF-8')."'"> 
      <td style="width:4%;"><img src="ast/images/fs-directory.png" /></td> 
      <td style="width:86%;text-align:left;"><?php echo htmlentities($row['name'], ENT_QUOTES, 'UTF-8'); ?></td> 
      <td style="width:10%;text-align:center;"><?php echo htmlentities($row['privacy'], ENT_QUOTES, 'UTF-8'); ?></td> 
     </tr> 
    <?php endforeach; ?> 
</table> 

有返回,並沒有在erro_log文件或者,這是我說的是奇怪,因爲它適用於文件夾,但沒有文件表沒有任何錯誤或任何東西。我認爲這可能對他們處理數據的方式有所幫助。爲了從文件夾獲取數據,它請求分配給uid(user_id)的任何文件夾,這個文件夾的數值是一個數值,這裏我們使用的是非數字值,但是隨機文件夾字符串可能是問題的根源,但是它真的不應該。

任何有關代碼可能出錯的建議?

+2

做一些調試(這意味着檢查所有變量的值,以確保它們包含您所假設的值)。例如'var_dump($ query); var_dump($ rows);'將是你調查的一個很好的起點。不要盯着代碼 - 積極調查它。 – goat

回答

3

正如我所看到的,fid包含同時要添加入查詢不是字母數字字符串值。

此外,我希望大家都知道SQL注入的代碼允許的。

所以,最好是直接更改配售使用預處理語句。在這個標籤下面有很多例子。