这是类似于我正在使用的简化代码。在这一本书中,我从ID中提取名称。
$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++
}
我得到的是相同的名称,select语句中的计数器保持为0。
我不得不将$ select语句和$ result的定义放入循环中,每次我们进入while循环时,它都会重新定义所有内容,类似于下面的代码。对我来说,这似乎不切合实际,也不是最佳选择。在这种情况下,最佳的解决方法是什么?我对PHP中的变量作用域并不十分熟悉,关于sql函数,我还没有找到任何有关此问题的好的文档。
$counter = 0;
$maxusers = 10;
while($counter<$maxusers) {
$select = "SELECT nID,nName WHERE nID = $counter";
$result = sqlsrv_query($connection, $select);
while($row = sqlsrv_fetch_array($result)) {
echo $row['nName'];
}
$counter++
}
这是我实际编写的代码。
$selectFirst = "SELECT TOP 1 nDateTime,nUserID FROM TB_EVENT_LOG WHERE nUserID = $usercounter AND nDateTime BETWEEN $today AND $tomorrow";
$selectLast = "SELECT TOP 1 nDateTime,nUserID FROM TB_EVENT_LOG WHERE nUserID = $usercounter DateTime BETWEEN $today AND $tomorrow DESC";
$resultFirst = sqlsrv_query($bscon, $selectFirst);
$resultLast = sqlsrv_query($bscon, $selectLast);
$selectnumberofUsers = "SELECT TOP 1 nUserIdn FROM TB_USER ORDER by nUserIdn DESC";
$usersmaxq = sqlsrv_query($bscon, $selectnumberofUsers);
$usersmax = sqlsrv_fetch_object($usersmaxq)->nUserIdn;
while($usercounter<$usersmax){
$usercounter = $usercounter + 1;
while($rowfirst = sqlsrv_fetch_array($resultFirst)) {
$intime = $rowfirst['nDateTime'];
}
echo $intime." ".$usercounter."<br />";
}
您的问题与可变范围无关。$ select变量一次设置为具有$ counter当前值的字符串。您的第二个示例之所以有效,是因为每次都会重置此值。但是,在第二个示例中,您正在创建一条获得1行的sql语句(假设nID是唯一的),然后遍历结果检索该行。您正在执行10个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'];
}
对于您的实际代码,应该可以通过使用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";
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句