Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从会话数组生成逗号分隔的列表_Php_Mysql_Arrays_Session - Fatal编程技术网

Php 从会话数组生成逗号分隔的列表

Php 从会话数组生成逗号分隔的列表,php,mysql,arrays,session,Php,Mysql,Arrays,Session,我有一个会话数组[cart],其中包含用户id号。我试图从联系人表生成电子邮件地址列表,其中会话中的联系人id号=数据库中的联系人id 这是我的密码 // Find cart members from the session array foreach ($_SESSION['cart'] as $key=>$val) { $contactid = $val; // Query the database for cart members $cartresult =

我有一个会话数组[cart],其中包含用户id号。我试图从联系人表生成电子邮件地址列表,其中会话中的联系人id号=数据库中的联系人id

这是我的密码

// Find cart members from the session array
foreach ($_SESSION['cart'] as $key=>$val) {
    $contactid = $val;

    // Query the database for cart members
    $cartresult = mysql_query("SELECT contact.email FROM contact WHERE contact.contact_id = '$contactid'");
    $emailresult = mysql_query($emailquery) or DIE (mysql_error());
    while ($r = mysql_fetch_array($emailresult)) { 
        $emailAry[] = $r['email']; 
    }
}

// Create comma separated list from email array
if (count($emailAry)) {
    $list = implode(", ", $emailAry);

    $list = str_replace(" ,", "", $list);
显然$emailAry没有价值,因为if语句被忽略了


知道为什么会这样吗?

在外部作用域中声明
$emailAry
数组,这样您就可以从while和foreach之外的代码中访问它,就像他的:

$emailAry = array();
foreach ($_SESSION['cart'] as $key=>$val) {
...
...

从我的角度来看,
$emailquery
未定义

    $emailAry = array();

    // Find cart members from the session array
    foreach ($_SESSION['cart'] as $key=>$val) {
        $cartresult = mysql_query("SELECT email FROM contact WHERE contact_id = '$val'");
        while ($r = mysql_fetch_array($cartresult)) { 
            $emailAry[] = $r['email']; 
        }
    }

    // Create comma separated list from email array
    if (count($emailAry)) {
        $list = implode(",", $emailAry);

        // no need to replace ', ' with '', implode will do all the job creating a CSV :)
        //$list = str_replace(" ,", "", $list);
    }

用这个,它既简单又快捷

 $to = '';
 foreach ($result->result() as $row){
    $to .=  $row->id.',';            
 }

 $to = rtrim($to,',');

根据您的更改。

什么是
打印($\u会话['cart'])
输出?数组正确地位于会话中。兹拉坦发现了问题所在。不过谢谢。:)如果这是你的解决方案,请检查我的答案是否被接受:)单击我的awswer计数下方的灰色箭头形状:)我做到了。我也回顾了我以前的问题,并接受了其他答案,现在我知道如何。。。现在我有足够的声望来支持你的回答。谢谢:)