我有一个小问题,因为我对所有这些东西都很陌生,我在谷歌搜索时没有成功,因为我不知道我正在寻找的确切定义。
我有一个非常简单的数据库,我得到了所有行:
while($row = mysql_fetch_array($result)){
echo $row['id']. " - ". $row['name'];
echo "<br />";
}
现在,我的问题是:如何过滤第二个结果?我认为这样的事情可行,但它不会:
$name2= $row['name'][2];
甚至可能吗?或者我是否必须编写另一个mysql查询(类似SELECT .. WHERE id = "2"
)以获取第二行中的名称值?
我想要的是:
- 从数据库中获取所有数据(使用“while循环”),但不要在我的页面上单独显示某些结果。例如echo("name in second row")
和echo("id of first row")
等等。
答案 0 :(得分:12)
如果您希望使用完整的结果集而不是只遍历它们一次,则可以将整个结果集放到数组中:
$row = array();
while( $row[] = mysql_fetch_array( $result ) );
现在您可以使用第一个索引访问单个记录,例如第二行的名称字段位于$row[ 2 ][ 'name' ]
。
答案 1 :(得分:2)
$result = mysql_query("SELECT * FROM ... WHERE 1=1");
while($row = mysql_fetch_array($result)){
/*This will loop arround all the Table*/
if($row['id'] == 2){
/*You can filtere here*/
}
echo $row['id']. " - ". $row['name'];
echo "<br />";
}
答案 2 :(得分:0)
$counter = 0;
while($row = mysql_fetch_array($result)){
$counter++;
if($counter == 2){
echo $row['id']. " - ". $row['name'];
echo "<br />";
}
}
答案 3 :(得分:0)
是的,理想情况下,您必须编写另一个SQL查询来过滤结果。如果你有:
SELECT * FROM Employes
然后你可以用:
过滤它SELECT * FROM Employes WHERE Name="Paul";
如果你想要每个以P开头的名字,你可以用:
来实现SELECT * FROM Employes WHERE Name LIKE "P%";
使用sql查询过滤数据的主要原因是MySQL / MSSQL / Oracle / etc等数据库管理器系统经过高度优化,并且比PHP中的服务器端条件块更快。
答案 4 :(得分:0)
这个While循环会自动从数据库中获取所有记录。如果你想获得任何其他字段,那么你只需要使用它。
答案 5 :(得分:0)
取决于你想做什么。 mysql_fetch_array()获取资源指针现在指向的当前行。这意味着您根本没有$row['name'][2];
。在while循环的每次迭代中,您拥有$ row数组中查询的所有列,您不会立即从数组中的查询中获取所有行。如果只需要这一行,那么是 - 在查询中添加WHERE
子句,如果不需要,则不检索其他行。如果你需要所有行,但是当你得到第二行时你想做一些特别的事情,那么你必须添加一个计数器来检查你当前正在使用哪一行。即:
$count = 0;
while($row = mysql_fetch_array($result)){
if(++$count == 2)
{
//do stuff
}
}
答案 6 :(得分:0)
如果您希望能够在一个循环中使用2个连续结果,则可以存储第一个循环的结果,然后循环。
$initial = true;
$storedId = '';
while($row = mysql_fetch_array($result)) {
$storedId = $row['id'];
if($initial) {
$initial = false;
continue;
}
echo $storedId . $row['name'];
}
这只适用于连续的事情。请原谅语法错误,我已经用PHP编程了很长时间......
答案 7 :(得分:0)
如果您总是想要第二行,无论您在数据库中有多少行,都应该修改您的查询:
SELECT * FROM theTable LIMIT 1, 1;
答案 8 :(得分:0)
我使用了答案中的代码并略微修改了它。以为我会分享。
$result = mysql_query( "SELECT name FROM category;", db_connect() );
$myrow = array();
while ($myrow[] = mysql_fetch_array( $result, MYSQLI_ASSOC )) {}
$num = mysql_num_rows($result);
使用示例
echo "You're viewing " . $myrow[$view_cat]['name'] . "from a total of " . $num;