PHP PDO с хранимой процедурой SqlServer не возвращает все данные - PullRequest
1 голос
/ 06 мая 2011

Мне дали хранимую процедуру, которая называется так:

SP_REPORT_HOME 'param1','param2',1

Она выполняет кучу кода, о котором я не знаю, хотя она возвращает кучу данных, которые мне нужно использовать,Он содержит некоторые поля со значениями NULL, в то время как другие полностью заполнены (обратите внимание, что вся строка не NULL, только некоторые поля). Я использую PDO и PHP на компьютере с Ubuntu 10.10 для получения этой информации, мой метод getReport:

public function getReport($empresa1, $empresa2, $num) {
    $ds = $this->connection->prepare('SP_REPORT_HOME ?,?,?');
    $ds->bindParam(1, $empresa1, PDO::PARAM_STR, 4);
    $ds->bindParam(2, $empresa2, PDO::PARAM_STR, 4);
    $ds->bindParam(3, $num, PDO::PARAM_INT, 4);
    $ds->execute(); 
    return $ds->fetchAll();
}

Соединение $ this-> - это просто экземпляр PDO, созданный следующим образом:

$this->connection = new PDO(
        "dblib:host=IP:PORT;dbname=DBNAME", 
        "LOGIN", 
        "PASS"
    );

Метод возвращает массив, содержащий данные без строк, содержащих нулевые поля, любойзнаете почему не отображаются эти строки?Они мне действительно нужныЯ использую PHP5.3 и SQLServer 2008

Ответы [ 2 ]

0 голосов
/ 07 мая 2011

Ну, в итоге возникла ошибка в процедуре, хотя это действительно странно.

Процедура на одном из своих шагов создает временную таблицу и вставляет нужные мне данные. В других системах, которые мы здесь используем (встроенный в Java), процедура работает просто отлично, ошибок нет вообще, и все данные есть. То же самое происходит с SQL Server Management Studio, без ошибок запроса.

Хотя в php вставка завершается неудачно, потому что она создает таблицу с ненулевыми полями (хотя об этом не говорится). Я нашел это, пытаясь установить соединение и запрос, используя способ mssql. В вызове $ connection-> query () он показал ошибку вставки, сказав, что я пытался вставить ноль в ненулевое поле. Не остановил сценарий, хотя. В результате получается результат без строк с нулевыми полями. Версия pdo, вероятно, имела ту же проблему, но подавляла сообщение об ошибке.

Что ж, мы изменили процедуру, чтобы создание таблицы указывало на пустые поля, но, тем не менее, мы понятия не имеем, почему она работает во всех других системах, и в php она использовала другое значение по умолчанию для этих полей ...

0 голосов
/ 06 мая 2011

Проверьте http://php.net/manual/en/pdo.setattribute.php для настройки ATTR_ORACLE_NULLS.Я предполагаю, что настройка этого параметра позволит получить желаемый результат.

...