0

所以在我使用 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 />";
4

1 回答 1

0

sqlsrv_fetch_array第二次使用不正确。

sqlsrv_fetch_array($conn, $aanvragenATV);

sqlsrv_fetch_array将第一个参数作为 sql 语句和第二个获取类型。所以改成,

sqlsrv_fetch_array($aanvragenATV,SQLSRV_FETCH_NUMERIC);

注意:从您使用的代码看来,您$rowATV[0]需要按类型获取它,NUMERIC或者根据您的需要进行更改。

于 2013-06-19T06:39:39.090 回答