我有一个问题,如果有人可以回答。请原谅我对此缺乏经验,但这是我尝试的第一个项目,所有这些对我来说都是全新的。我正在尝试使用 php 和 mySQL 在工作中构建一个库存系统,但对于如何显示当前借给人们的物品,我遇到了一些困难。
我将提供给用户的项目分为 4 个类别,这些项目的贷款记录存储在 4 个不同的表中。我还有另一个用户表,以及项目表及其特征。
当我的页面显示时,我想要将分配给每个用户的所有项目组合在一个表中。我对如何做到这一点有两个想法,但我不确定哪个是最好的方法。
我的第一个想法是从 users 表中提取所有用户并将信息存储到一个数组中,然后从 4 个贷款表中提取所有信息并将每个表存储到一个数组中。从那里我会做类似的事情
for($i=1;$i>sizeof($usersArray);$i++){
for($a=1;$a>sizeof($loanTable1Array);$a++){
if($userArray[$i][userID] == $loanTable1Array[$a][userID]{
//list items
}
}
for($b=1;$b>sizeof($loanTable2Array);$b++){
if($userArray[$i][userID] == $loanTable2Array[$b][userID]{
//list items
}
}
for($c=1;$c>sizeof($loanTable3Array);$c++){
if($userArray[$i][userID] == $loanTable3Array[$c][userID]{
//list items
}
}
for($d=1;$d>sizeof($loanTable4Array);$d++){
if($userArray[$i][userID] == $loanTable4Array[$d][userID]{
//list items
}
}
}
不过,我对此的担忧是,我将有大约 100-150 个用户,每个表平均有 100 个不同的项目。这意味着循环的大约 40,000 - 60,000 次迭代。
我的另一个想法是从用户表中提取所有条目,然后使用该数据在这样的 where 语句中使用用户 ID 查询其他 4 个表。但是后来我读到,如果您在循环中有查询,那么您做错了。
$sql = "SELECT userID FROM users";
$allUsers = runQuery($sql); //data is sanitized before running the query
for($i = 1; $i<sizeof($allUsers); $i++){
$loan1sql = "SELECT * FROM loantable1 WHERE userID = {$allUsers[$i][$userID]}'";
$loan1Items= runQuery($loan1sql);
for($a = 1; $a<sizeof($loan1Items); $a++){
//list items
}
$loan2sql = "SELECT * FROM loantable2 WHERE userID = '{$allUsers[$i][$userID]}'";
$loan2Items= runQuery($loan2sql);
for($b = 1; $b<sizeof($loan2Items); $b++){
//list items
}
$loan3sql = "SELECT * FROM loantable3 WHERE userID = '{$allUsers[$i][$userID]}'";
$loan3Items= runQuery($loan3sql);
for($c = 1; $c<sizeof($loan3Items); $c++){
//list items
}
$loan4sql = "SELECT * FROM loantable4 WHERE userID = '{$allUsers[$i][$userID]}'";
$loan4Items= runQuery($loan4sql);
for($d = 1; $d<sizeof($loan1Items); $d++){
//list items
}
}
这样做会导致每次加载页面时对数据库进行 400 - 600 次调用。有人对我的最佳行动方案有任何意见吗?任何帮助将不胜感激。