假设我有一个$数组元素(及其相关的子元素),大致遵循以下格式:
[0] => Array (
[valA] => PA0000001
[valB] => qwerty
[valC] => asdfgh
[valD] => zxcvbn
[valE] => poiuyt
[valF] => lkjhgf
)
依此类推,可能包含大量元素(和子元素)。我想使用此数组来创建和更新我的SQL Server数据库中的记录。但在我让所有这些记录松散之前,我想根据一组预先确定的规则来检查它们。例如:
valA必须存在于表Alpha
上的列alphID中valB必须存在于表Bravo上的列bravId
中valD必须存在于表Delta
上的列deltID中valF必须存在于表Foxtrot上的列foxID
中
显而易见的解决方案是循环遍历数组的每个元素,并运行类似以下查询的内容:
$sql = "SELECT (SELECT alphID FROM Alpha WHERE alphID = :alphID) AS AlphaExists,
(SELECT bravID FROM Bravo WHERE bravID = :bravID) AS BravoExists,
(SELECT deltID FROM Delta WHERE deltID = :deltID) AS DeltaExists,
(SELECT foxID FROM Foxtrot WHERE foxID = :foxID) AS FoxtrotExists";
$stmt = $this->_db->prepare($sql);
//Bind PDO values with appropriate array values here
$rslt = $stmt->fetch(PDO::FETCH_ASSOC);
return($rslt);
然后用它来确保事情没事。
然而,这不能很好地扩展 - 连接到数据库,运行查询,返回结果和分配它们的开销对于一个查询来说很小,但是当有多个查询时,它很快变得不可行。 / p>
是否有更好,更有效的方法来执行这些查找并返回一些内容,告诉我,对于每个元素,哪些规则已经满足/未满足?