我有一个查询我的mysql数据库,但我只是想知道是否有更简单的实现方法,这是我的代码:
$sql="SELECT value
FROM drivers
WHERE drivers_id = '$driver1' OR drivers_id = '$driver2' OR drivers_id = '$driver3'";
$result = mysql_query($sql);
$i = 1;
while ($row = mysql_fetch_assoc($result)) {
${'value'.$i} = $row['value'];
$i++;
}
这就是我想要的代码,因为它更短,但我遇到的问题是我需要知道在数据库中找到$ driver1变量的地方,为此检索的数据放在value1变量中,并且$ driver2的检索信息放在$ value2中。但是,它会按照匹配项的顺序从数据库中获取数据。我不想为此编写3个不同的查询,因为我相信它可以在一个中完成。
答案 0 :(得分:3)
$sql="SELECT drivers_id, value FROM drivers WHERE drivers_id IN ('$driver1','$driver2','$driver3')";
$result=mysql_query($sql);
while($row = mysql_fetch_assoc($result)) {
${'value_for_'.$row['drivers_id']}=$row['value'];
}
动臂。
虽然我个人而不是动态变量,但我会使用一个带有id作为键的数组:
...
$resultArray = array();
while($row = mysql_fetch_assoc($result)) {
$resultArray[$row['drivers_id']]=$row['value'];
}
答案 1 :(得分:0)
如果要更改结果的顺序,可以在查询中添加order by
子句:
$sql = "SELECT drivers_id, value FROM drivers WHERE drivers_id IN ('$driver1','$driver2','$driver3') ORDER BY drivers_id";
...