在PHP中,我有一个11人的数组,其中只给出了每个人的身份证:
$persons = array(1,3,39,72,17,20,102,99,77,2,982);
在我的MysqL数据库中,有一个表格,其中包含有关每个人的详细信息:
TABLE personInfo
- ID (integer)
- name (string)
- birth date (timestamp)
- weight (decimal)
- ...
问题:
所以现在,我想为PHP数组中的每个ID选择匹配的名称.我只能想象两种解决方案:
1. for-loop:
foreach ($persons as $person) {
$result = MysqL_query("SELECT name FROM personInfo WHERE id = ".$person);
}
2.逻辑运算符OR
$result = MysqL_query("SELECT name FROM personInfo WHERE id = 1 OR id = 3 OR id = 39 OR ...");
两种解决方案都很慢,不是吗?
TABLE ids
- ID (integer)
$result = MysqL_query("SELECT a.ID,b.name FROM ids AS a JOIN personInfo AS b ON a.ID = b.ID");
题:
到目前为止这一切都正确吗?如果是:为什么会这样?如果我有第二个表,MySQL查询会更快吗?只有一张桌子,速度非常慢?解决我的问题的最快方法是什么(选择与PHP数组的ID匹配的名称)?
最佳答案
如果你有很多id(数百或更多),将值提供给临时表并加入它实际上更快.
您可能想阅读这篇文章: