Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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 PDO将所有数组提取到一维_Php_Arrays_Pdo - Fatal编程技术网

Php PDO将所有数组提取到一维

Php PDO将所有数组提取到一维,php,arrays,pdo,Php,Arrays,Pdo,这可能是一个简单的问题,但我很难理解如何解决它。我有一个表单,允许用户选择“自定义”或“所有”员工来分配工作 如果选择“自定义”,则用户通过单击每个复选框来选择员工,然后我将其插入到作业表中。这将生成下面的数组(3、1、10是员工ID) 如果选择了“all staff”,我首先查询一个select语句,从staff表中获取所有的staff ID,然后像上面一样将它们插入job表中。但是这会生成数组: Array ( [0] => Array (

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

如果选择“自定义”,则用户通过单击每个复选框来选择员工,然后我将其插入到作业表中。这将生成下面的数组(3、1、10是员工ID)

如果选择了“all staff”,我首先查询一个select语句,从staff表中获取所有的staff ID,然后像上面一样将它们插入job表中。但是这会生成数组:

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
        )
)
如何将上面的数组转换为显示的第一个数组

我使用下面的代码查询数据库以获取所有员工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();              

}
$select=$db->prepare(“从staff中选择staffID”);
如果($select->execute())
{
$staff=$select->fetchAll();
}
对于($i=0;$iprepare(“插入staffJobs(jobID,userID)值(:jobID,:staffID)”);
$staffStmt->bindParam(':jobID',$jobID,PDO::PARAM_INT);
$staffStmt->bindParam(':staffID',$staff[$i],PDO::PARAM_INT);
$staffStmt->execute();
}
第一个数组插入精细,但最后一个数组为staffID插入零

有什么建议吗

谢谢=)。

如果您在
中为
打印($staff[$i])
,您可能会得到

    Array
    (
        [staffID] => 1
        [0] => 1
    )
这意味着您应该使用
$staff[$i]['staffID']


另一种方法应该适用于当前代码,即使用而不是
fetchAll()

查看手册。在第一次查询中,您可以使用:

$staff = $select->fetchAll(PDO::FETCH_COLUMN, 0);

第二个数组的形式与第一个数组相同。

您需要为fetchAll提供一个fetch样式

$staff = $select->fetchAll(PDO::FETCH_NUM);

谢谢,但这不需要我使用两种不同的方法吗?例如,第一个数组不包含“staffID”,是否不可能完全删除“staffID”并仅通过数字引用它?@Elliot:我明白你的意思,
fetchColumn()
在这两种情况下都可以使用。谢谢!您的链接帮助我找到了如何获取一个
staffID
-索引数组:
$select->fetchAll(PDO::fetch_COLUMN | PDO::fetch_GROUP)
。非常酷的东西
$staff = $select->fetchAll(PDO::FETCH_NUM);