我的mysql数据库中有几个自动递增s.no
和相应的names
。
目前编写的queries
如下所示。
$result = mysql_query ("SELECT name FROM table WHERE s.no= '1'") or die (mysql_error ());
while($row = mysql_fetch_array($result)){
$name1= $row['name'];
}
$result = mysql_query ("SELECT name FROM table WHERE s.no= '2'") or die (mysql_error ());
while($row = mysql_fetch_array($result)){
$name2= $row['name'];
}
如何优化,只需一个查询并从name1
s.no=1
nameN
s.no=N
分配{{1}}
答案 0 :(得分:5)
您可以使用IN
子句执行此操作。
SELECT name, s.no as no FROM table WHERE s.no IN ('1', '2')
然后,用字符串动态查找变量。
$varName = 'name'.$row['no'];
$$varName = $row['name];
答案 1 :(得分:0)
$result = mysql_query ("SELECT name,s.no numb FROM table WHERE s.no= '1' OR s.no= '2'") or die (mysql_error ());
while($row = mysql_fetch_array($result)){
if($row['numb']==1)
$name1= $row['name'];
else if($row['numb']==2)
$name2= $row['name'];
}
答案 2 :(得分:0)
请原谅我的PHP,但这样的事情会起作用。
$name = [];
$result = mysql_query ("SELECT s.no, name FROM table") or die (mysql_error ());
while($row = mysql_fetch_array($result)) {
$index = $row['no'];
$name[$index] = $row['name'];
}
我最近在java中做了类似的事情,我使用Map来跟踪批处理查询中的逻辑“组”。上面的代码使用相同的想法。
如果您只想在(1,2)中获取s.no的行,那么如上面的海报所示,您可以使用IN子句。
答案 3 :(得分:0)
$sql = "SELECT name FROM table WHERE s.no IN ('1', '2') order by s.no asc";
$result = mysql_query($sql);
$name1 = mysql_result($result, 0, 0);//fetches row 0, column 0
$name2 = mysql_result($result, 1, 0);//fetches row 1, column 0