Php MYSQL-从获取的数组中选择特定值
我有一个小问题,因为我对所有这些东西都很陌生,所以我在谷歌上搜索不成功,因为我不知道我要找什么的确切定义 我有一个非常简单的数据库,我通过以下方式获取所有行:Php MYSQL-从获取的数组中选择特定值,php,mysql,arrays,Php,Mysql,Arrays,我有一个小问题,因为我对所有这些东西都很陌生,所以我在谷歌上搜索不成功,因为我不知道我要找什么的确切定义 我有一个非常简单的数据库,我通过以下方式获取所有行: while($row = mysql_fetch_array($result)){ echo $row['id']. " - ". $row['name']; echo "<br />"; } 有可能吗?或者我必须编写另一个mysql查询,比如SELECT。。其中id=2以获取第二行中的名称值 我想说的是:
while($row = mysql_fetch_array($result)){
echo $row['id']. " - ". $row['name'];
echo "<br />";
}
有可能吗?或者我必须编写另一个mysql查询,比如SELECT。。其中id=2以获取第二行中的名称值
我想说的是:
-使用while循环从数据库获取所有数据,但不在我的页面上单独显示某些结果。例如,第二行的echoname和第一行的echoid等等。是的,理想情况下,您必须编写另一个sql查询来过滤结果。如果你有:
$counter = 0;
while($row = mysql_fetch_array($result)){
$counter++;
if($counter == 2){
echo $row['id']. " - ". $row['name'];
echo "<br />";
}
}
SELECT * FROM Employes
然后,您可以使用以下方法对其进行过滤:
SELECT * FROM Employes WHERE Name="Paul";
如果您希望每个名称都以p开头,可以通过以下方式实现:
SELECT * FROM Employes WHERE Name LIKE "P%";
使用sql查询筛选数据的主要原因是,MySQL/MSSQL/Oracle/etc等数据库管理器系统经过高度优化,比PHP中的服务器端条件块快得多。此While循环将自动从数据库中获取所有记录。如果要获取任何其他字段,则只需需要用于此操作。取决于您要执行的操作。mysql_fetch_数组获取当前资源指针指向的行。这意味着您没有$row['name'][2];完全在while循环的每次迭代中,查询中的所有列都位于$row数组中,而不是一次从数组中的查询中获取所有行。如果只需要这一行,那么是-向查询中添加WHERE子句,如果不需要其他行,则不检索它们。如果您需要所有行,但在获得第二行时希望执行一些特殊操作,那么您必须添加一个计数器来检查当前正在使用的行。即:
$count = 0;
while($row = mysql_fetch_array($result)){
if(++$count == 2)
{
//do stuff
}
}
如果希望能够在一个循环中使用两个连续的结果,可以存储第一个循环的结果,然后循环
$initial = true;
$storedId = '';
while($row = mysql_fetch_array($result)) {
$storedId = $row['id'];
if($initial) {
$initial = false;
continue;
}
echo $storedId . $row['name'];
}
但是,这只适用于连续的情况。请原谅语法错误,我已经很长时间没有用PHP编程了…如果您希望使用完整的结果集而不是只循环一次,您可以将整个结果集放入一个数组:
$row = array();
while( $row[] = mysql_fetch_array( $result ) );
现在,您可以使用第一个索引访问单个记录,例如,第二行的名称字段位于$row[2]['name']中 如果始终需要第二行,则无论数据库中有多少行,都应修改查询,因此:
SELECT * FROM theTable LIMIT 1, 1;
请参阅:我使用了答案中的代码,并对其进行了轻微修改。我想我会分享
$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;
您是只想要第二行,还是想要对循环中的第二行进行操作?您想做什么?如果您能提供更多的背景信息,可能会有更好的解决方案。我编辑了我的问题,试图解释我想要实现的目标。我希望它可以理解。您想要查询返回的第二行还是id=2的行?查询基本上应该返回所有行,但我不想单独使用它们,如果可能的话,正如我在编辑中试图解释的那样。我知道我可以通过编写一个新的mysql查询来做到这一点,但我认为这可能不是最好的解决方案。。其中,如果id从0开始,则名称(如P%)将$counter的初始值设置为-1。您还可以更改条件以检查$row['id']值。事实上,有很多选择:这与cidenix提出的基本相同,两者都会起作用,或者我误解了吗?不,这不一样。取决于你想做什么@cidenix的代码正在检查查询$row['id']==2返回的id列的值。我只是增加一个计数器,这意味着当你到达返回的第二行时,不管它的值是多少,你都会进入if。这似乎正是我想要的:非常感谢!很抱歉问另一个愚蠢的问题,但我应该把你的代码放在哪里?我在我现有的循环和外部尝试了它,但我一直得到未定义的偏移量:2。无需担心!我想出来了。我忘了计数从0开始。。。但出于某种奇怪的原因,行[0]给出了第二行,行[1]仍然给出了一个未定义的偏移量错误,虽然我的数据库中有两行,但我想这可能与我代码中的另一个错误有关。我只是想说这也很好。简单但有效,但一旦我发现我做错了什么,我会接受Juhana的答案:
$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;