更新关联数组键

时间:2012-09-28 11:26:36

标签: php mysql sql web-applications

我无法更新多维关联数组的值。数组$people已从另一个MySQL调用生成。用: array_push($people, array("forename" => $pat_f_name, "surname" => $pat_s_name,"id" => $id));我已将$forname$surname设置为"",只是为了获得密钥。

我试图迭代数组进行SQL调用并检索相关的forename和surname,然后更新数组索引处的键。

以下是我到目前为止的尝试。

提前致谢。

$stmt = $mysql->stmt_init();

foreach ($people as $person)
{
    if($stmt->prepare("SELECT forename,surname FROM worker WHERE id = ?"))
    {
        $stmt->bind_param('i', $p_id);
        $p_id = $person["id"];
        $stmt->execute();
        $stmt->bind_result($f_name, $s_name);
        while($stmt->fetch())
        {
            $people[$person]["forename"] = $f_name;
            $people[$person]["surname"] = $s_name;

        }
    }
}    


$stmt->close();

2 个答案:

答案 0 :(得分:2)

$ person是一个数组

$p_id = $person["id"];

这个

$people[$person]["forename"] = $f_name;

应输出:

警告:....中的非法偏移类型

var_dump($people)

输出

array(0) { } 

更好

foreach($people as $key => $person)
<your code>

$people[$key]["forename"] = $f_name;

答案 1 :(得分:0)

我认为这里的主要问题是你尝试使用$ person作为索引。要么给你的数组($ people)一个正确的索引,要么创建一个全新的数组,你可以在你的while循环中用你的新$人填充。

对于索引解决方案,请将人员添加到您的数组中,而不是:

$people[$i++] = $person;

对于新阵列解决方案,请创建一个新阵列,然后使用以下命令填充它:

$newPeople[] = $person;