PDO fetchAll数组为一维

Ell*_*ott 43 php arrays pdo

这可能是一个简单的问题,但我很难理解如何解决它.我有一个表单,允许用户选择"自定义"或"所有"员工"分配给作业.

如果选择了自定义,则用户通过单击每个复选框选择人员,然后将其插入到作业表中.这会产生下面的数组(3,1,10是员工ID)

Array
(
    [0] => 3
    [1] => 1
    [2] => 10
)
Run Code Online (Sandbox Code Playgroud)

如果选择"所有员工",我首先查询select语句以从staff表中获取所有员工ID,然后将这些ID插入到作业表中,如上所述.但是这会产生数组:

Array
(
    [0] => Array
        (
            [staffID] => 1
            [0] => 1
        )

    [1] => Array
        (
            [staffID] => 23
            [0] => 23
        )

    [2] => Array
        (
            [staffID] => 26
            [0] => 26
        )

    [3] => Array
        (
            [staffID] => 29
            [0] => 29
        )
)
Run Code Online (Sandbox Code Playgroud)

如何将上面的数组转换为显示的第一个数组?

我正在使用下面的代码查询数据库以获取所有员工ID,然后插入它们.

    $select = $db->prepare("SELECT staffID FROM staff");
    if($select->execute())
    {
       $staff = $select->fetchAll();
    }

    for($i = 0; $i<count($staff); $i++)
    {
    $staffStmt = $db->prepare("INSERT INTO staffJobs (jobID, userID) VALUES (:jobID, :staffID)");
    $staffStmt->bindParam(':jobID', $jobID, PDO::PARAM_INT);
    $staffStmt->bindParam(':staffID', $staff[$i], PDO::PARAM_INT);

    $staffStmt->execute();              

}
Run Code Online (Sandbox Code Playgroud)

第一个数组插入正常,但最后一个数组为staffID插入零.

有什么建议?

谢谢=).

jer*_*oen 98

请查看手册中的示例2.在您的第一个查询中,您可以使用:

$staff = $select->fetchAll(PDO::FETCH_COLUMN, 0);
Run Code Online (Sandbox Code Playgroud)

并且您的第二个数组将具有与第一个数组相同的形式.