使用sqlsrv计数:sqlsrv_fetch_array()期望参数2为long

时间:2013-06-19 06:35:03

标签: php sql sqlsrv

所以在我使用sqlsrv函数之前,我使用的是MySQL函数。

代码对我来说很完美,但是现在我已经用sqlsrv取代了MySQL函数,它给了我这个错误。

sqlsrv_fetch_array() expects parameter 2 to be long

代码用于计算是这样的:

$conn = sqlsrv_connect( $serverName, $connectionInfo);
$tsql = "SELECT * FROM login WHERE username = '".($_SESSION['username'])."'";
$res = sqlsrv_query($conn, $tsql);
while($row = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC)) {

$aantalATV = $row['ATV'];
$aanvragenATV = "SELECT COUNT(soort) AS totaal FROM goedgekeurd WHERE username = '".($_SESSION['username'])."' AND soort='ATV' ";
$rowATV = sqlsrv_fetch_array($conn, $aanvragenATV);
$aantalATV= $aantalATV - $rowATV[0];
echo "aantal ATV dagen resterende:" .$aantalATV."<br />";
}

问题出在哪里,是否需要更改查询?

感谢任何帮助!

基于以下答案的新代码段:Rikesh

$aantalATV = $row['ATV'];
$aanvragenATV = "SELECT COUNT(soort) AS totaal FROM goedgekeurd WHERE  username = '".($_SESSION['username'])."' AND soort='ATV' ";
$res = sqlsrv_query($conn, $aanvragenATV);
$rowATV = sqlsrv_fetch_array($res, SQLSRV_FETCH_NUMERIC);
$aantalATV= $aantalATV - $rowATV[0];
echo "aantal ATV dagen resterende:" .$aantalATV."<br />";

1 个答案:

答案 0 :(得分:0)

您第二次错误地使用sqlsrv_fetch_array

sqlsrv_fetch_array($conn, $aanvragenATV);

sqlsrv_fetch_array将第一个参数作为sql语句&amp;第二次获取类型。所以改成它,

sqlsrv_fetch_array($aanvragenATV,SQLSRV_FETCH_NUMERIC);

注意:您的代码似乎已使用$rowATV[0],您需要按类型NUMERIC获取它,或者根据需要更改它。