【问题标题】:PHP Cannot Fetch larger data from databasePHP无法从数据库中获取更大的数据
【发布时间】:2020-03-27 04:14:54
【问题描述】:

函数getUsers_Test()只能检索10行限制的数据,而我的getUsers_Orig()无法检索任何记录**我在数据库中的记录几乎是50行*。没有错误,没有警告。 (PHP 版本 5.5.12)

function getUsers_Test(){
    $sql = "SELECT TOP 10 a.user_name, a.user_level, a.user_status, b.* FROM user_access a, user_details b WHERE a.emp_code = b.emp_code ORDER BY a.id DESC";
    try{
        $data = array();
        $db = null;
        $db = connectDB();
        $stmt = $db->prepare($sql);
        $stmt->execute();
        $data = $stmt->fetchAll();

    }catch(PDOException $e){
        $data['message'] = "Error: " . $e;
    }
    echo json_encode($data);
}

    function getUsers_Orig(){
    $sql = "SELECT a.user_name, a.user_level, a.user_status, b.* FROM user_access a, user_details b WHERE a.emp_code = b.emp_code ORDER BY a.id DESC";
    try{
        $data = array();
        $db = null;
        $db = connectDB();
        $stmt = $db->prepare($sql);
        $stmt->execute();
        $data = $stmt->fetchAll();

    }catch(PDOException $e){
        $data['message'] = "Error: " . $e;
    }
    echo json_encode($data);
}

    function connectDB() {
    $dbuser = "myusername";
    $dbpass = "mypassword";
    $dbh = new PDO('odbc:databaseName', $dbuser, $dbpass);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $dbh;
}

【问题讨论】:

  • 我认为这里的问题是我的 PHP 配置使用 PHP_PDO_ODBC 来容纳更大的获取数据。但还是想不通。

标签: php sql sql-server odbc


【解决方案1】:

您可以尝试捕获一般异常而不是 PDOException

try
{
  // ...
} catch (\Exception $e) {
  // ...
}

【讨论】:

  • 我认为这里的问题是我的 PHP 配置使用 PHP_PDO_ODBC 来容纳更大的获取数据。但还是想不通。
【解决方案2】:

这里的数据大小不是问题,我获取的数据有一个特殊字符(A'代表Ñ)。我曾经在我的连接中添加字符集 UTF-8,但我仍然无法获取它。

当我执行生成脚本并从 MSSQL 提取数据而不是备份和还原时会出现此问题。所以当我从 MSSQL 的 Generate Script 功能执行脚本时,字符发生了变化,我没有注意到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-21
    • 2018-03-31
    • 2019-06-09
    • 1970-01-01
    • 2018-05-28
    • 2012-01-06
    相关资源
    最近更新 更多