2013-09-27 31 views
-1

我有一個名爲'筆記本電腦'的表和名爲'Lap_War_Expiry'表內的列。代碼運行良好,與之前發佈的編輯How to retrieve more than one data in email?一樣。但是,代碼只能運行45個數據。它應該是100個數據併發送給用戶。 (我知道這聽起來太多電子郵件了,但在我試圖將數據合併到一封電子郵件之前,我需要確保所有數據都是先檢索出來的)無法檢索表php中的所有行,只有一半檢索

我嘗試更改下面的php.ini配置,但仍然無法檢索所有需要的電子郵件。除了這個之外,還有什麼地方可以改變嗎?或者它是我的配置不正確?

max_execution_time = 0  ; Maximum execution time of each script, in seconds 
max_input_time = 0 ; Maximum amount of time each script may spend parsing request data 
;max_input_nesting_level = -1 ; Maximum input variable nesting level 
memory_limit = 128M  ; Maximum amount of memory a script may consume (128MB) 

這是我發送電子郵件編碼:

<?php 
//class.phpmailer.php here 

// ======== get database data ================== 
$link = mysql_connect("localhost","root",""); 
$database="master_inventory"; 
mysql_select_db ($database,$link) OR die ("Could not open $database"); 
$query2 = 'SELECT Lap_PC_Name, Lap_War_Expiry FROM laptop'; 
name. 
$result1 = mysql_query($query2); 

while($row = mysql_fetch_array($result1)) { 
$Lap_PC_Name = $row['Lap_PC_Name']; 
$Lap_War_Expiry = $row['Lap_War_Expiry']; 

$date=$row['Lap_War_Expiry']; 
// $date is get from table 
$date = date ('d-m-Y')||('d/m/Y') + (7 * 24 * 60 * 60); 
$newdate = strtotime ('+45 days' , strtotime ($row['Lap_War_Expiry'])) ; 
$newdate = date ('d/m/Y' , $newdate); 
if ($newdate <45) { 
$mail->Username = "[email protected]"; 
$mail->Password = "password"; 

//sent email code is here 

if(!$mail->Send()) 
echo "Message was not sent <br />PHPMailer Error: " . $mail->ErrorInfo; 
    else 
echo "Message has been sent"; 
} 
    else { 
echo "No PC expired less than 45 days for today. "; 
    } 
} 

?> 
+0

代碼太多 - 考慮修剪一下 – FaddishWorm

+0

謝謝,我已經編輯過了。 – user2810332

回答

0

我認爲$newdate < 45可能有一些用它做。

將其更改爲50,我敢打賭你會得到50條記錄。或者輸入一個else聲明,以便如果$newdate > 45您可以看到正在打印的內容。

此外,你應該在你的SQL中執行邏輯而不是在你的PHP中。你最初的選擇查詢應該過濾掉。這將使它更容易,更快。

+0

我嘗試你所說的,但發送的電子郵件只有45. – user2810332

+0

你可以在你的while循環之前調用'mysql_num_rows'並確認你的SQL返回了多少行? – FaddishWorm