Php select语句中未更新预定义计数器

Php select语句中未更新预定义计数器,php,sql,Php,Sql,这是一个简化的代码,类似于我正在使用的代码。在这张照片里,我从身份证上取名字 $counter = 0; $select = "SELECT nID,nName WHERE nID = $counter"; $result = sqlsrv_query($connection, $select); $maxusers = 10; while($counter<$maxusers) { while($row = sqlsrv_fetch_array($result)) {

这是一个简化的代码,类似于我正在使用的代码。在这张照片里,我从身份证上取名字

$counter = 0;
$select = "SELECT nID,nName WHERE nID = $counter";
$result = sqlsrv_query($connection, $select);

$maxusers = 10;

while($counter<$maxusers) {
  while($row = sqlsrv_fetch_array($result)) {
      echo $row['nName'];
  }
$counter++
}
$counter=0;
$select=“选择nID,nName,其中nID=$counter”;
$result=sqlsrv\u查询($connection,$select);
$maxusers=10;

而($counter您的问题与变量范围无关。$select变量被设置为当前值为$counter的字符串一次。您的第二个示例之所以有效,是因为每次都会重置此值。 但是,在第二个示例中,您正在创建一条sql语句,该语句获取1行(假设nID是唯一的),然后在结果中循环检索该行。您正在执行10个sql调用,但如果您这样修改查询,则只需要一个sql调用:

$minusers = 0;
$maxusers = 10;

$select = "SELECT nID,nName WHERE nID >= $minusers AND nID < $maxusers ORDER BY nID";

$result = sqlsrv_query($connection, $select);
while($row = sqlsrv_fetch_array($result)) {
    echo $row['nName'];
}
$minusers=0;
$maxusers=10;
$select=“选择nID,nName,其中nID>=$minusers和nID<$maxusers按nID排序”;
$result=sqlsrv\u查询($connection,$select);
while($row=sqlsrv\u fetch\u数组($result)){
echo$row['nName'];
}
对于实际代码,您应该能够使用GROUP by为每个nUserId获取一条记录。请尝试以下操作:

$selectFirst = "SELECT nDateTime,nUserID FROM TB_EVENT_LOG WHERE nUserID >= $usersmin AND nUserID <= $usersmax AND nDateTime BETWEEN $today AND $tomorrow GROUP BY nUserID";

$selectFirst=“从TB\u事件日志中选择nDatime,nUserID其中nUserID>=$usersmin和nUserID这不是我使用的确切代码。我只是为了简化而写的。修复了,谢谢。你需要计数器吗?你能选择“WHERE nID>=$min和nID<$maxusers吗?”?这不会真正起作用。我真正的select语句是
$selectFirst=“从TB_事件日志中选择前1个数据时间,其中nUserID=$usercounter和数据时间介于$today和$today之间”;
。我只需要每个用户的第一条记录。除非我的select语句中有一种方法可以只获取每个nUserID的第一行。我想你可以通过nUserID分组来实现这一点。这实际上是一个非常好的主意。唯一的问题是每个nID都有多条记录,我需要的是第一条数据时间。我编辑了我的问题to包括到目前为止我的代码。我已经更新了我的答案供您编辑,希望这会起作用。我无法使用GROUP BY,因为无法聚合nDatime。它们是多个具有不同时间戳的条目,我只需要第一个。但是,您的答案激励我搜索正确答案。我发现这是为了满足我的需要从这里开始,我真的不知道它是如何工作的,但在我使用之前我不会使用它。谢谢。底线:计数器很糟糕!:)
$minusers = 0;
$maxusers = 10;

$select = "SELECT nID,nName WHERE nID >= $minusers AND nID < $maxusers ORDER BY nID";

$result = sqlsrv_query($connection, $select);
while($row = sqlsrv_fetch_array($result)) {
    echo $row['nName'];
}
$selectFirst = "SELECT nDateTime,nUserID FROM TB_EVENT_LOG WHERE nUserID >= $usersmin AND nUserID <= $usersmax AND nDateTime BETWEEN $today AND $tomorrow GROUP BY nUserID";