MariaDB / PHP 8 / PDO -> нулевое значение в наборе результатов будет возвращено как пустая строка [закрыто]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 MariaDB / PHP 8 / PDO -> нулевое значение в наборе результатов будет возвращено как пустая строка [закрыто]

Сообщение Anonymous »

При использовании MariaDB в командной строке я получаю нулевое значение в результате запроса выбора с использованием sum(), но не нахожу ни одной подходящей строки в таблице. Ожидается:

Код: Выделить всё

MariaDB [test]> SELECT sum(turnover) as turnover FROM turnover where date >= 20301201000000;
+---------------------+
| turnover            |
+---------------------+
|                NULL |
+---------------------+
1 row in set (0,001 sec)
К сожалению, когда я выполняю этот запрос через PHP8/PDO, я получаю пустую строку:
Вывод из var_dump:

Код: Выделить всё

array(1) {
[0]=>
array(1) {
["turnover"]=>
string(0) ""
}
}
Я уже явно отключил PDO::ATTR_STRINGIFY_FETCHES, но это не помогло:

Код: Выделить всё

$dsn = 'mysql:host=' . $server . ';dbname=' . $dbname . ";charset=utf8";

$options = [PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_ORACLE_NULLS => PDO::NULL_TO_STRING, PDO::ATTR_STRINGIFY_FETCHES => false];

$dbh = new PDO($dsn, $user, $pass, $options);
$dbh->exec("set names utf8");

$query = "SELECT sum(turnover) as turnover FROM turnover where date >= 20301201000000;"
$stmt = $dbh->prepare($query);
$stmt->execute();
$resultset = $stmt->fetchAll(PDO::FETCH_ASSOC);

print_r($resultset);
Это приводит к проблемам в PHP8, поскольку в последующих вычислениях, которые я выполняю над значением, возникает фатальная ошибка:

Неустранимая ошибка PHP: Uncaught TypeError: Неподдерживаемые типы операндов: string / int

Версия PHP: php-8.3.15
Версия MariaDB: 10.11.6
Как изменить это поведение, чтобы нулевые значения возвращались как нулевые?

Подробнее здесь: https://stackoverflow.com/questions/793 ... -empty-str
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»