在mysql中插入逗号分隔数组

问题描述 投票:0回答:2

我正在编写一个脚本,我想为新用户选择父 ID,并将其父 ID 与父 ID 一起保存在 mysql 表中。

$last_id = mysql_insert_id(); 

//select parent id of last inserted user 
$sel = mysql_query("SELECT * FROM tbl_new_agent WHERE new_agnt_id = '".$last_id."'"); 
$row = mysql_fetch_array($sel); 
$a = $row['new_agnt_ParentId']; 

//select parents of parent which are supposed to be stored at parent_arr field in db as comma separated values                                      
$sel1 = mysql_query("SELECT * FROM tbl_new_agent WHERE new_agnt_id = '".$a."'"); 
$row1 = mysql_fetch_array($sel1); 

//here i want to add element in array.though its not working obviously 
$b = array_push($row1['parent_arr'],$a); 

$update = mysql_query("UPDATE tbl_new_agent SET parent_arr = '".$b."' WHERE new_agnt_id = '".$last_id."'");  

我不知道如何存储逗号分隔的值或最初存储单个值,然后添加更多元素。任何人都可以给我这方面的想法吗?

php mysql arrays insert
2个回答
0
投票

以下是获取用户“父母”的逗号分隔列表的方法,无需额外的列:

SELECT GROUP_CONCAT(t2.new_agnt_id)
FROM tbl_new_agent t1
JOIN tbl_new_agent t2
ON t2.new_agnt_id = t1.new_agnt_ParentId
WHERE t1.new_agnt_id = :last_id

出于性能考虑,请考虑仅命名所需的列,而不是对所有内容通用地使用

SELECT *
。例如。
SELECT new_agnt_ParentId FROM tbl_new_agent WHERE ...


0
投票

现在我找到了这个解决方案:

$update = mysql_query("UPDATE tbl_new_agent SET parent_arr = CONCAT('".$b."','".$a."',',') WHERE new_agnt_id = '".$last_id."'");

并在另一个页面中以这种方式使用:

     $agent_id = $_POST['comm_Agent'];  
    $query = mysql_query("SELECT * FROM tbl_new_agent");

    while($row = mysql_fetch_array($query)){
             $parent_arr = explode(',',$row['parent_arr']);
                   if (in_array($agent_id, $parent_arr)) {
                                echo $row['new_agnt_id'];
                   }

}

我确信还有其他“巧妙”的方法来实现这一点。但到目前为止,上面的代码正在按预期工作。感谢您的回复马库斯·亚当斯

© www.soinside.com 2019 - 2024. All rights reserved.