2015-05-08 54 views
3

背景:

我想學習準備好的語句,並且這個拋出一個錯誤我想學習如何解決。可能的內存泄漏與準備好的語句?

在項目表中的數據是由這就是爲什麼我使用的是事先準備好的聲明爲這一個爲好,好......當然實踐中用戶輸入..

我花了大約一個小時的搜索本網站和大多數網站都建議將內存限制更改爲更高的值..我不認爲這將是必需的,因爲我選擇的表格有很少的行。

查詢的目的:

用戶加載頁面,它將列出項目。從這裏,他們可以購買上述同分的項目,他們從參與計劃收購我們運行。這是查詢到列表中的項目..

以下是錯誤:

Fatal error: Allowed memory size of 201326592 bytes exhausted (tried to allocate 4294967296 bytes) in (Removed, but is location of file) on line 80

線80:

$Select_stmt2->bind_result($Item_Key, $Item_Image, $Item_Name, $Item_Amount, $Item_Describe); 

額外的信息:

另外的$ conn變量是從第二的configure.php文件頭中拉出。我將顯示它減去連接到服務器的信息。

//Connect to Database 
$conn = new mysqli('localhost', 'Username', 'Password', 'Table Name'); 

代碼:

//Item Points 
      $Enabled = 'Enabled'; 

      $Select_Query2 = "SELECT Item_Key, Item_Image, Item_Name, Item_Amount, Item_Describe FROM Item WHERE Item_Status = ?"; 
      $Select_stmt2 = $conn->prepare($Select_Query2); 
      $Select_stmt2->bind_param('s',$Enabled); 
      $Select_stmt2->execute(); 

      $Select_stmt2->bind_result($Item_Key, $Item_Image, $Item_Name, $Item_Amount, $Item_Describe); 
      if(!$Select_stmt2) 
      { 
       echo'Error: Selecting Items'; 
      } 
      else 
      { 
       /* Code to display the data for line 80 on the website */ 
      } 
+0

什麼是您的物品表的描述?如果您單獨選擇每個項目,是否會得到相同的錯誤? – andrewsi

+0

你正在循環中運行'$ conn-> prepare'嗎? – Siguza

+1

你是否將圖像存儲爲BLOB的? –

回答

1

你有BLOB列?數字4294967296表示您正在嘗試爲blob列的最大長度分配內存。它可能是一個錯誤,但不是泄漏,罪魁禍首可能是綁定聲明。如果你有一個blob列,並且它一直給出錯誤,請嘗試在你的select語句中將它轉換爲varchar。

+0

Item_Describe被設置爲longblob ..並且我將其更改爲varchar,並按預期工作。謝謝您的幫助。 – Jason