Я использую PDO (драйвер dblib) для вызова хранимой процедуры SQL Server. Когда он делает ошибку, он использует PRINT для генерации ответного сообщения. Проблема в том, что я не могу получить сообщение с функцией errorInfo. Результат пуст, и rowcount также возвращает -1.
Например, когда я запускаю хранимую процедуру в sql server management studio:
CALL x_prodcedure 1,2
Это выводит (не набор строк): Invalid ID/data
Когда я делаю тот же вызов в php, данные набора строк не найдены, и errorinfo возвращает:
Array
(
[0] => 00000
[1] => 0
[2] => (null) [0] (severity 0) [(null)]
[3] => 0
[4] => 0
)
Не уверен, какие другие функции я могу использовать, чтобы получить сообщение «Неверный идентификатор / данные»
На самом деле PDO ERROR 000
значение ошибки при успешном выполнении запроса.
Вы должны печатать только в случае неудачи, в противном случае вы должны игнорировать.
В вашем случае что-то вроде:
if(!$stmt->execute(array(...))){
var_dump($dbh->errorInfo()); //not outside of the failure block
}else{
var_dump($stmt->fetchAll());
}
Более вероятный not a rowset
не считается ошибкой для PDO
Других решений пока нет …