1

我的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'];
    }

如何优化这一点,使其具有单个查询并分配name1from s.no=1nameNfrom s.no=N

4

4 回答 4

5

你可以用一个IN子句来做到这一点。

 SELECT name, s.no as no FROM table WHERE s.no IN ('1', '2')

然后,用字符串动态查找变量。

$varName = 'name'.$row['no'];
$$varName = $row['name];
于 2012-12-25T17:23:32.513 回答
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'];

}
于 2012-12-25T17:26:15.097 回答
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 子句。

于 2012-12-25T17:29:30.147 回答
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

http://php.net/manual/en/function.mysql-result.php

于 2012-12-25T17:43:05.640 回答