2012-03-25 41 views
0

我從來沒有使用過array_combine,而且在查詢中出現「布爾代替資源」的錯誤。如果我將查詢更改爲讀取... WHERE cal_id =「。$ quidx。」;布爾錯誤消失了,但由於我無法確定的原因,後來在腳本中出現意外的T_STRING錯誤,查詢的結果也沒有任何結果。array_combine的用法或查詢錯誤?

主要問題:這是array_combine的正確用法嗎?如果是這樣,那麼在該腳本的其餘部分中缺少的內容在查詢後不會導致任何信息? $ quid1是一個ID數組,$ tm是一個Unix時間戳數組。兩個數組檢查出一致的行數。在array_combine之後,$ cls1返回前兩個數組的有效數組,但它們在查詢中似乎不起作用。

感謝您的幫助。我還在學習。

我已編輯腳本以包含新的查詢語句。現在的問題是在foreach語句中,錯誤讀取無效參數。

$cls1 = array_combine($quid1, $tm); 
     $quidx = array_values($quid1); 
     $quclx = array_values($tm); 
//// note to self.. start final query for email write with new id data, likely redundant. 
$qumail = "SELECT cal_id, cal_name, cal_time, cal_description FROM webcal_entry WHERE cal_id in (" . implode (',' , $quidx) . ")"; 
$wemail = mysql_query($qumail); 
while ($row = mysql_fetch_array($wemail, MYSQL_NUM)) { 
    $quname2 = $row[1]; 
    $qtime = $row[2] 
    $qudesc2 = $row[3]; 

下面是適用的完整腳本部分。我仍在啄食它,所以它還沒有完全修復:

$cls1 = array_combine($quid1, $tm); 
     $quidx = array_values($quid1); 
     $quclx = array_values($tm); 
//// note to self.. start final query for email write with new id data, likely redundant. 
$qumail = "SELECT cal_id, cal_name, cal_time, cal_description FROM webcal_entry WHERE cal_id in (" . implode (',' , $quidx) . ")"; 
$wemail = mysql_query($qumail); 
while ($row = mysql_fetch_array($wemail, MYSQL_NUM)) { 
    $quname2 = $row[1]; 
    $qtime = $row[2] 
    $qudesc2 = $row[3]; 
} 
    foreach ($qtime as $key=>$btUx) { 
     if (strlen($btUx) < 6){ 
     $btUx = '0' . $btUx; 
     date_default_timezone_set('UTC'); 
     $unixEpoch = strtotime($btUx); 
     date_default_timezone_set('America/Denver'); 
     $formtime = date("H:i", $unixEpoch); 
     } 
    } 
    foreach ($tm as $key=>$tf) { 
     $idnotime = 0; 
     $idnow = (strlen($tf) > 2); 

    switch($tf) { 
     case $idnow: 
     $repmlnow = sprintf("Event: %s \nTime: %s \nDesc: %s \n\n", $row[1], $formtime, $row[3]); 
     break; 
     case $idnotime: 
     $repmlnotm = sprintf("Event: %s \nDesc: %s \n\n", $row[1], $row[3]); 
     break; 
    } 
} 
/////===================== send mail... 

這是我最後一次編輯,除非有其他評論。我已經改變了原來的腳本如下,一切似乎這種情況下,由於下面的貢獻者在正常工作......

$cls1 = array_combine($quid1, $tm); 
     $quidx = array_values($quid1); 
     $quclx = array_values($tm); 
$qumail = "SELECT cal_id, cal_name, cal_time, cal_description FROM webcal_entry WHERE cal_id in (" . implode (',' , $quidx) . ")"; 
$wemail = mysql_query($qumail); 
while ($row = mysql_fetch_array($wemail, MYSQL_NUM)) { 
    $quname2 = $row[1]; 
    $qtime = $row[2]; 
    $qudesc2 = $row[3]; 
} 
if(strlen($qtime) < 6){ 
    $btUx = '0' . $qtime; 
    date_default_timezone_set('UTC'); 
    $unixEpoch = strtotime($btUx); 
    date_default_timezone_set('America/Denver'); 
    $formtime = date("H:i", $unixEpoch); 
}elseif(strlen($qtime) > 5){ 
    date_default_timezone_set('UTC'); 
    $unixEpoch = strtotime($value); 
    date_default_timezone_set('America/Denver'); 
    $formtime = date("H:i", $unixEpoch); 
} 
foreach ($quclx as $key=>$tf) { 
    $idnotime = 0; 
    $idnow = (strlen($tf) > 2); 

    switch($tf) { 
     case $idnow: 
     $repmlnow = sprintf("Event: %s \nTime: %s \nDesc: %s \n\n", $quname2, $formtime, $qudesc2); 
     break; 
     case $idnotime: 
     $repmlnotm = sprintf("Event: %s \nDesc: %s \n\n", $quname2, $qudesc2); 
     break; 
    } 
} 
/////===================== send mail... 
+0

謝謝habibillah,這絕對是一個地方,但它不是金戒指。我收到了一些數據,這可能已經解決了查詢問題,但是現在在foreach語句中存在錯誤。我將對上面的腳本進行一些編輯,並從那裏尋找更多幫助。再次感謝! – defacto7 2012-03-25 06:03:58

+0

我還會在implode語句中進行閱讀。這對我來說是新的。 – defacto7 2012-03-25 06:14:31

回答

1

$ quidx是數字索引的關鍵和$ quid1數組值作爲一個數組值。嘗試更改查詢成爲:

$qumail = "SELECT cal_id, cal_name, cal_time, cal_description FROM webcal_entry WHERE cal_id in (" . implode (',' , $quidx) . ")";