2014-02-08 25 views
0

我必須創建一些php頁面,允許您插入並顯示一些隨機圖像(在我的mysql數據庫中保存爲blob)。 那麼,當我嘗試它給我的那個錯誤:警告:mysql_fetch_array():提供的參數不是一個有效的MySQL結果資源。 在這裏,我的網頁:使用mysql_fetch_array()顯示一些圖像

$n="SELECT COUNT('id_product') 
FROM 'products'"; 
$value=mysql_query($n); 

do 
{ 
$selectionASC='SELECT id_product 
     FROM products 
     ORDER BY id_product ASC 
     LIMIT 1'; 
$selectionDESC='SELECT id_product 
     FROM products 
     ORDER BY id_product DESC 
     LIMIT 1'; 
    $ASC=mysql_query($selectionASC) 
    or die ('Impossible execute the query <br />').mysql_error(); 
    $DESC=mysql_query($selectionDESC) 
    or die ('Impossible execute the query <br />').mysql_error(); 

    //____________________________________________________________________ 
    $rand_n=rand(($ASC-1),($DESC+1)); 

    //____________________________________________________________________ 
    $selected='SELECT id_product,name, price, img 
     FROM products 
     WHERE id_product='.$rand_n; 
    //____________________________________________________________________ 
    while($row=mysql_fetch_array($selected)) 
     { 
      echo "Product'id: &nbsp"; echo $row[0]; 
      echo '<br />'; 
      echo "Name: &nbsp"; echo $row[1]; 
      echo '<br />'; 
      echo "Price:: &nbsp"; echo $row[2]; 
      echo '<br />'; 
      echo "Immage: <img src='images/".$row['img']."' alt='Image'>";; 
      echo '<hr> <br />'; 

      $value--; 
     } 
} 
while ($value==0) 

可能有人會這麼好心來告訴我,我錯了?謝謝,併爲我可憐的英語感到難過!

編輯:

$allowedExts=array("gif", "jpeg", "jpg", "png"); 

if(isset($_POST['submit'])) 
    { 
    $temp=explode(".", $_FILES["file"]["name"]); 
$extension=end($temp); 

if(isset($_FILES['file']['name'])) 
{ 
    if(!empty($_FILES['file']['name'])) 
    { 
     $directory='\www\v1.2\loaded'; 
     $uploadfile = $directory . basename($_FILES['file']['name']); 

     if ((($_FILES["file"]["type"] == "image/gif") 
      || ($_FILES["file"]["type"] == "image/jpeg") 
      || ($_FILES["file"]["type"] == "image/jpg") 
      || ($_FILES["file"]["type"] == "image/pjpeg") 
      || ($_FILES["file"]["type"] == "image/x-png") 
      || ($_FILES["file"]["type"] == "image/png")) 
      && ($_FILES["file"]["size"] < 20000) 
      && in_array($extension, $allowedExts)) 
     { 
       if ($_FILES["file"]["error"] > 0) 
       { 
       echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
       } 
       else 
       { 
       //$nameImage=$_FILES(["file"]["name"]); 
       $typeImage=$_FILES["file"]["type"]; 
       $sizeImage=$_FILES["file"]["size"]; 

        if (file_exists("upload/" . $_FILES["file"]["name"])) 
        { 
          echo $_FILES["file"]["name"] . " already exists. "; 
        } 
        else 
        { 
          if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) 
          { 
           $insert="INSERT INTO 'img' 
           VALUES ('','$uploadfile','$typeImage','$sizeImage')"; 
           echo "File's extension valid, upload executed"; 
          } 
          else 
          { 
          echo "Upload failed: ceck the size and the extension"; 
          } 
         } 
       } 
     } 
     else 
     { 
     echo "Invalid file"; 
     } 
    } 
} 

}

回答

0

不數組傳遞img。你必須通過索引號,因爲你已經使用mysql_fetch_array 所以,從替換這行代碼,

echo "Immage: <img src='images/".$row['img']."' alt='Image'>";; 

echo "Immage: <img src='images/".$row['3']."' alt='Image'>"; 

在這裏,我想張圖片的URL是在第3索引存儲。請務必檢查圖像索引並將其取值3

================================== ==============================================

更好的方式使用mysql_fetch_assoc。在這種情況下,您不需要從數據庫中找到列索引

只需從代碼中替換while循環即可。 它肯定會工作

while($row=mysql_fetch_assoc($selected)) 
     { 
      echo "Product'id: &nbsp"; echo $row['id_product']; 
      echo '<br />'; 
      echo "Name: &nbsp"; echo $row['name']; 
      echo '<br />'; 
      echo "Price:: &nbsp"; echo $row['price']; 
      echo '<br />'; 
      echo "Immage: <img src='images/".$row['img']."' alt='Image'>"; 
      echo '<hr> <br />'; 

      $value--; 
     } 
+0

謝謝,這是有用的!但是,在圖像的位置,它會標記「源代碼」。任何建議? – DiEich

+0

你是什麼意思? plz再次解釋一次 –

+0

當我在服務器上運行該頁面時,該頁面可以正常工作,並顯示除圖像以外的所有內容。在它的地方出現一些字符,而不是二進制代碼,而是像這樣:@ aCf#124sf等等。 – DiEich

0

按照您的代碼,我看到你錯過

$選擇=請求mysql_query($選擇)的說明;

而($行= mysql_fetch_array($選擇)){ ........ }

入住這應該幫助你的線以上。

0

我覺得這裏的問題是$rand_n=rand(($ASC-1),($DESC+1));$ASC and $DESC是資源不是整數,而不是你應該使用 $ASC = mysql_num_rows($ASC); $DESC = mysql_num_rows($DESC); 那麼你可以使用$rand_n=rand(($ASC-1),($DESC+1));

$selected='SELECT id_product,name, price, img 
    FROM products 
    WHERE id_product='.$rand_n; 
$selected = mysql_query($selected); 

while($row=mysql_fetch_assoc($selected)) 
    { 
     echo "Product'id: &nbsp"; echo $row['id_product']; 
     echo '<br />'; 
     echo "Name: &nbsp"; echo $row['name']; 
     echo '<br />'; 
     echo "Price:: &nbsp"; echo $row['price']; 
     echo '<br />'; 
     echo "Immage: <img src='images/".$row['img']."' alt='Image'>"; 
     echo '<hr> <br />'; 

     $value--; 
    }