#php #mysql
Сервер
Debian 4.9.65-3+deb9u1 (2017-12-23) x86_64
Mysql 5.7
PHP 7.2
Таблица в базе
CREATE TABLE `test` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`user` INT(11) NULL DEFAULT NULL,
`project` INT(11) NULL DEFAULT NULL,
`text` TEXT NULL COLLATE 'utf8_general_ci',
PRIMARY KEY (`id`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
AUTO_INCREMENT=2;
Скрипт PHP
query("SELECT * FROM test WHERE id = 1")->fetch_object();
var_dump($product_name);
$mysqli->close();
Ответ сервера
object(stdClass)#3 (4) { ["id"]=> string(1) "1" ["user"]=> string(1) "1" ["project"]=>
string(1) "2" ["text"]=> string(10) "Текст" }
через PDO пробывал, так же все в string
т.е всегда получаю string, может какой то модуль поставить надо ? Все ставил из стандартных
репозиториев и настройки по умолчанию
Хостинг Timeweb
Ответы
Ответ 1
Не всегда string приходит, обманываете! если будет NULL - то вернётся именно нормальный php-шный null. Остальное всё можно и ручками привести. Можно получать нужные типы. Легко (вру, тяжко и муторно): /** * Костыле-функция для получения PDO типа по native_type * @param string $native_type * @return int */ function getPDOType($native_type) { switch ($native_type) { case 'LONG': return PDO::PARAM_INT; // ... case 'VAR_STRING': default: return PDO::PARAM_STR; } } $pdo = db::connect(); $stmt = $pdo->prepare('SELECT `id`, `name` FROM `users` WHERE `id` = 600;'); $stmt->execute(); $col_cnt = $stmt->columnCount(); $row = []; for ($i = 0; $i < $col_cnt; $i++) { $meta = $stmt->getColumnMeta($i); $stmt->bindColumn( $i + 1, $row[$meta['name']], getPDOType($meta['native_type']) ); } $stmt->fetch(PDO::FETCH_BOUND); var_dump($row); //array(2) { // ["id"] => &int(600) // ["tema"] => &string(9) "Чебурашка" //} Посмотрите также пример в документации. Описание большей части параметров PDO::FETCH_* есть тут. Но я бы не стал использовать такой способ. С другой стороны, если написать ему какую-нибудь функцию-обёртку, которая будет "всё делать за меня" - возможно и пригодилось бы для чего-нибудь.
Комментариев нет:
Отправить комментарий