PDO的使用指南:使用多个查询来操作Sql Server
P粉178132828
P粉178132828 2023-08-13 20:25:23
[PHP讨论组]

我想执行一些不返回结果集的查询,然后执行一个真实的查询,并获取其结果。 这是一个不起作用的示例:

<?php

try {
    $db = new PDO('dblib:host=myhost;dbname=master','user','password');


    $query = "declare @entier int = 1;";
    $db->exec($query);
    $query = "select @entier;";
    $stmt = $db->query($query);
    $rows = $stmt->fetchAll();
    print_r($rows);
}
catch (PDOException $e) {
    print ($e->getMessage());
}
catch (Exception $e) {
    print ($e->getMessage());
}

?>

这段代码也不起作用:

try {
    $db = new PDO('dblib:host=myhost;dbname=master','user','password');

    $query = "declare @entier int = 1; select @entier;";
    $stmt = $db->query($query);
    $rows = $stmt->fetchAll();
    print_r($rows);
}
catch (PDOException $e) {
    print ($e->getMessage());
}
catch (Exception $e) {
    print ($e->getMessage());
}

?>

但是这段代码可以运行:

<?php

try {
    $db = new PDO('dblib:host=myhost;dbname=master','user','password');

    $query = "select 1;";
    $stmt = $db->query($query);
    $rows = $stmt->fetchAll();
    print_r($rows);
}
catch (PDOException $e) {
    print ($e->getMessage());
}
catch (Exception $e) {
    print ($e->getMessage());
}

?>

谢谢您的帮助

P粉178132828
P粉178132828

全部回复(1)
P粉770375450

我知道这是老旧的,但对于通过Google找到这个问题的其他人来说:你需要使用PDOStatement::nextRowset来迭代处理来自多个查询的结果集。

然而,在某些版本中,使用nextRowset和dblib时似乎存在内存问题(在我的情况下,尝试分配了94Tb的内存...),所以我最终重新设计以完全避免多个SQL查询(而是复制在使用它的地方声明的值)。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号