2013-01-03 89 views
0
$query = $db->query("SELECT * FROM files WHERE hash = '" . $file . "'"); 
while($result = $query->fetch_array()) { 
    $result[0] = $result['uploadr']; 
    $result[1] = $result['name']; 
} 

這是用於查詢和取數組的代碼,但它返回null。有任何想法嗎?順便說一句,我嘗試使用「$ result [0]」和「$ result ['uploadr'];」來獲得結果。任何幫助?爲什麼MySQLi Fetch數組返回null?

+0

並查詢實際上在mysql中返回結果? – jarchuleta

+0

是的,我做了或死(mysqli_error());沒有錯誤;我也在phpMyAdmin中進行了查詢,並返回了結果。 – Criesval

+0

'print_r($ result)'看起來像什麼?那裏的結果? –

回答

-2

不要重新分配您的數組。只需使用$result= query->fetch_assoc()和檢索它們是這樣的:

$upload = $result['uploadr']; 
echo $upload; 

爲了使您的查詢固體免受攻擊,你應該使用一個事先準備好的聲明:

$query = "SELECT * FROM files WHERE hash = ?" 
if (!$stmt = $db->prepare($query)) 
    { 
     echo "Prepared Failed: (" . $db->errno . ") " . $db->error; 
    } 
    if (!$stmt->bind_param("s", $file)) 
     { 
      echo "Bind Failed: (" . $db->errno . ") " . $db->error; 
     } 
     if (!$stmt->execute()) 
      { 
       echo "Execution Failed: (" . $db->errno . ") " . $db->error; 
      } 
      if (!$results = $stmt->get_results()) 
       { 
        echo "No Results where found: (" . $db->errno . ") " . $db->error; 
       } 
       while($row = $results->fetch_assoc()) 
       { 
        $upload = $row['uploadr']; 
        $name = $row['name']; 
        echo $upload."<br>"; 
        echo $name; 
       } 
     $stmt -> close(); 
     $db -> close(); 
+2

意大利麪條代碼。它看起來很可怕。 –

+0

@RomanNewaza我不寫If(!)。我只是把它放在一邊,以便他可以逐步調試他的問題。但感謝您的意見。 –

+0

您應該使用例外。可以使用['mysqli_report()'](http://uk.php.net/manual/en/function.mysqli-report.php)和'MYSQLI_REPORT_STRICT'設置它們。 –