通过数组获取mysql记录的数据?

问题描述:

我在我的网站上工作,并试图实现这样的功能:通过数组获取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

我想你的代码,并没有注意到有什么不对。为了帮助调试,你可以尝试添加一些“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'].''; 
} 

我没有在我面前的php-mysql手册,但不应该使用类似 的调用mysql_fetch_assoc而不是mysql_fetch_array。

当您使用mysql_fetch_array时,您将字段指定为$ trans [0],$ trans ['1]而不是字符串,例如。 $ trans ['id']

- 对不起,你是对的,我总是使用mysql_fetch_assoc调用而不是标志。 你如何去添加调试语句,如果你打印sql语句复制并粘贴到查询窗口 - 检查它是否正确运行。 其他数据库调用是否按预期工作,可能您没有收到任何结果。