PHP无法从数据库中获取更大的数据

Posted

技术标签:

【中文标题】PHP无法从数据库中获取更大的数据【英文标题】:PHP Cannot Fetch larger data from database 【发布时间】: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 来容纳更大的获取数据。但还是想不通。 【参考方案1】:

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

try

  // ...
 catch (\Exception $e) 
  // ...

【讨论】:

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

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

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

【讨论】:

以上是关于PHP无法从数据库中获取更大的数据的主要内容,如果未能解决你的问题,请参考以下文章

无法在嵌套循环中使用 pandas 附加更大的数据帧。如何更改为 numpy 向量化?

一次获取更大的 Facebook 个人资料图片和个人数据

创建更大的 pdf 时,mpdf 内存太低

从 iTunes 网络搜索中获取更大的艺术品图像

PHP GD 方法 imagecopy 比原始图像更大的图像文件

在更大的数据表上为每个用户选择第一行/最后一行的 SQL 性能