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