加载1000 +行后MSSQL:SQLSTATE [](null)(严重性0)

时间:2016-02-03 13:54:49

标签: php sql-server

我在使用PHP + Datatables从SQL Server返回大量行时遇到了一些问题。我的代码使用了一个主循环,然后是一些" subloops"。

有时,当行数达到1000+时,执行将中止,并显示错误MSSQL:SQLSTATE [](null)(严重性0)。

连接功能:

function pdo_mssql($sql){

    $host = ***;
    $user = ***;
    $pass = ***;
    $db   = ***;

    try {
        $PDO = new PDO( 'dblib:host=' . $host . ';dbname=' . $db, $user, $pass );;
    }
    catch ( PDOException $e ) {
        echo 'MSSQL error: ' . $e->getMessage(); exit;
    }

    $result = $PDO->query( $sql );

    if (is_array($result)){
        $row = $result->fetchAll( PDO::FETCH_ASSOC );
    }else{
        $row = $result;
    }

    return $row;

}

发生错误的脚本示例:

$sql = "SELECT ....";
$return = pdo_mssql($sql);

foreach ($return as $row){

    $sql2 = "SELECT ...."
    $return2 = pdomssql($sql2);

    foreach ($return2 as $row2){
        // Do something
    }

    $sql2 = "SELECT ...."
    $return2 = pdomssql($sql2);

    foreach ($return2 as $row2){
        // Do something
    }

    $sql2 = "SELECT ...."
    $return2 = pdomssql($sql2);

    foreach ($return2 as $row2){
        // Do something
    }

    // Show results

}

有没有人有任何建议要解决它?

由于

1 个答案:

答案 0 :(得分:0)

请检查代码,内部循环中没有分配$ return2。可能是你想做的事

$ sql2 =" SELECT ...." $ return2 = pdomssql($ sql2);