fetch_array中的sqlsvr_fetch_array

时间:2014-07-02 11:22:21

标签: php mysql sql-server

所以我有一个PHP脚本,我从MSSQL转换到SQLSRV,我遇到了一些困难。

我有这个

 while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC))
{

$time = time() - strtotime('today');

$row2sql = "SELECT SUM(mnyAmount) AS 'Total' FROM dbo.tblTransactions WHERE intPerson='".$row[intPerson]."'";
$row3sql = "SELECT SUM(mnyAmount) AS 'Total' FROM dbo.tblTransactions WHERE intPerson='".$row[intPerson]."' AND strDate>'".$row[strDate]."' AND mnyAmount<'0'";
$row4sql = "SELECT SUM(mnyAmount) AS 'Total' FROM dbo.tblTransactions WHERE intPerson='".$row[intPerson]."' AND strDate>'".$row[strDate]."' AND mnyAmount>'0'";

$row2 = sqlsrv_fetch_array($row2sql, SQLSRV_FETCH_ASSOC);
$row3 = sqlsrv_fetch_array($row3sql, SQLSRV_FETCH_ASSOC);
$row4 = sqlsrv_fetch_array($row4sql, SQLSRV_FETCH_ASSOC);

基本上根据搜索提取数据,然后每行交叉引用其数据。在MySQL中,这不是一个问题 - 但似乎在这里遇到困难?

基本上,如果我搜索史密斯&#34;它将以他们的名义向所有用户提供史密斯...(例如三行)然后我希望它分别得到他们的每个余额。

有人可以帮忙吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

您的每个查询都缺少对sqlsrv_query的调用。

即。对于每个子查询,你应该有这样的东西(见例1 http://www.php.net/manual/en/function.sqlsrv-fetch-array.php):

$sql = "SELECT SUM(mnyAmount) AS 'Total' FROM dbo.tblTransactions WHERE intPerson='".$row[intPerson]."'";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) {
    die( print_r( sqlsrv_errors(), true) );
}

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
    echo $row['LastName'].", ".$row['FirstName']."<br />";
}

sqlsrv_free_stmt( $stmt);

鉴于您已同时使用MySQL和SQLServer,可能值得考虑使用PDO(http://uk3.php.net/pdo)。这将允许您更改配置,而不必在需要更改数据库服务器时编辑代码。它还使代码保持一致。

答案 1 :(得分:0)

这将是固定代码。 sqlsrv_fetch_array的第一个参数必须是一个资源,你在这里给出一个字符串。您必须先执行查询才能解压缩&#34;解压缩&#34;它。

while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC))
{

$time = time() - strtotime('today');

$row2sql = "SELECT SUM(mnyAmount) AS 'Total' FROM dbo.tblTransactions WHERE intPerson='".$row[intPerson]."'";
$row3sql = "SELECT SUM(mnyAmount) AS 'Total' FROM dbo.tblTransactions WHERE intPerson='".$row[intPerson]."' AND strDate>'".$row[strDate]."' AND mnyAmount<'0'";
$row4sql = "SELECT SUM(mnyAmount) AS 'Total' FROM dbo.tblTransactions WHERE intPerson='".$row[intPerson]."' AND strDate>'".$row[strDate]."' AND mnyAmount>'0'";
//$connection is the connection variable you get from opening a connection to the database
$result2 = sqlsrv_query($connection, $row2sql);
$result3 = sqlsrv_query($connection, $row3sql);
$result4 = sqlsrv_query($connection, $row4sql);
$row2 = sqlsrv_fetch_array($result2, SQLSRV_FETCH_ASSOC);
$row3 = sqlsrv_fetch_array($result3, SQLSRV_FETCH_ASSOC);
$row4 = sqlsrv_fetch_array($result4, SQLSRV_FETCH_ASSOC);