2011-01-14 84 views
1

我在我的網站上工作,並試圖實現這樣的功能:通過數組獲取mysql記錄的數據?

管理員檢查記錄上的複選框以顯示收到付款。這些值存儲在一個名爲$paymentr的數組中,該數組被內建並更新MySQL數據庫。

現在,這裏的地方棘手的部分(對我來說,反正)進來:

後,它這樣做,代碼檢查多少行受到影響,然後發出一封電子郵件到另一個人應當列出所有基於存儲在數組中的ID的記錄信息。

由於某種原因,我一直在努力研究如何做到這一點。我有一個foreach環跑這樣的事情(我簡化了查詢,因爲它是更長的時間和複雜的,但我已經在phpMyAdmin測試吧)電子郵件代碼前向右走 -

foreach ($paymentr as $v) { 

$query = "SELECT transactions.id, transactions.refid, transactions.affid FROM transactions WHERE transactions.id = '$v'"; 

$result = mysql_query($query) or die("Query Failed: ".mysql_errno()." - ".mysql_error()."<BR>\n$query<BR>\n"); 
$trans = mysql_fetch_array($result, MYSQL_ASSOC); 

$transactions .= '<br>User ID:'.$trans['id'].' -- '.$trans['refid'].' -- '.$trans['affid'].''; 

} 

然後就是$交易變量將在電子郵件代碼中發送出去。

但不幸的是,它沒有奏效。有沒有人有任何想法?我覺得我只是缺少一個重要的組成部分或想法......任何事情都會有所幫助。也許array_map?但我從來沒有使用過。非常感謝你:)

+0

你已經檢查什麼`的var_dump($反式)`打印? – middus 2011-01-14 01:18:09

+0

嗨,再次感謝您的深思熟慮的答案和評論! 我嘗試了print_r($ paymentr);它正在輸出正確的變量。 我也試過var_dump($ trans);以及print_r ...沒有東西在那裏! :/我試圖在phpmyadmin的MySQL查詢和它的工作,拉正確的記錄。 – Sara 2011-01-16 03:23:10

+0

我也越來越「爲的foreach()提供的無效參數....在線50」在我的錯誤文件的問題......難道這是因爲我崩盤$ paymentr,它不再是一個數組? – Sara 2011-01-16 03:26:32

回答

1

我想你的代碼,並沒有注意到有什麼不對。爲了幫助調試,你可以嘗試添加一些「print_r」和「echo」代碼,以更好地理解發生了什麼。

另外,你提到你的數組是內爆的,我的理解返回一個字符串值數組的形式[值] [分隔符] [值] ...,它仍然是'foreach'開始時的數組?你是否發現$交易是空的?

print_r ($paymentr); // <----- ADDED FOR DEBUG 

foreach ($paymentr as $v) { 

$query = "SELECT id, refid, affid FROM transactions WHERE id = '$v'"; 

echo $query . "<br/>"; // <----- ADDED FOR DEBUG, (XHTML <br/> closed tag) 

$result = mysql_query($query) or die("Query Failed: ".mysql_errno()." - ".mysql_error()."<BR>\n$query<BR>\n"); 
$trans = mysql_fetch_array($result, MYSQL_ASSOC); 

$transactions .= '<br>User ID:'.$trans['id'].' -- '.$trans['refid'].' -- '.$trans['affid'].'';  
} 

或者,你可以做到這一點,它擊中分貝少:

foreach ($paymentr as $v) { $in_clause .= "'".$v."',"; } 
$in_clause = trim($in_clause, ","); 
$query = "SELECT id, refid, affid FROM transactions WHERE id IN ($in_clause)"; 

$result = mysql_query($query) or die("Query Failed: ".mysql_errno()." - ".mysql_error()."<BR>\n$query<BR>\n"); 
while ($trans = mysql_fetch_array ($result, MYSQL_ASSOC))  
{ 
    $transactions .= '<br>User ID:'.$trans['id'].' -- '.$trans['refid'].' -- '.$trans['affid'].''; 
} 
1

我沒有在我面前的php-mysql手冊,但不應該使用類似 的調用mysql_fetch_assoc而不是mysql_fetch_array。

當您使用mysql_fetch_array時,您將字段指定爲$ trans [0],$ trans ['1]而不是字符串,例如。 $ trans ['id']

- 對不起,你是對的,我總是使用mysql_fetch_assoc調用而不是標誌。 你如何去添加調試語句,如果你打印sql語句複製並粘貼到查詢窗口 - 檢查它是否正確運行。 其他數據庫調用是否按預期工作,可能您沒有收到任何結果。