1

我在更新多维关联数组的值时遇到问题。该数组$people是从另一个 MySQL 调用生成的。With : array_push($people, array("forename" => $pat_f_name, "surname" => $pat_s_name,"id" => $id));我设置了$fornameand $surnameto "",只是为了把钥匙放在那里。

我正在尝试遍历进行 SQL 调用的数组并检索相关的名字和姓氏,然后更新该数组索引处的键。

以下是我迄今为止的尝试。

提前致谢。

$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();
4

2 回答 2

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;
于 2012-09-28T11:53:53.067 回答
0

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

对于索引解决方案,将人员添加到您的数组中,如下所示:

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

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

$newPeople[] = $person;
于 2012-09-28T11:44:15.360 回答