itprog
Cruftsman
PDO, bindParam и PARAM_*
Имеется MySQL 5.0 и таблица:
[sql]
CREATE TABLE `table` (
`name` int(11) default NULL
) ENGINE=MyISAM;
[/sql]
И добавление записи в эту таблицу:
Такой код выбрасывает исключение:
SQLSTATE[01000]: Warning: 1264 Out of range value adjusted for column 'name' at row 1
Потому как выполняется запрос:
[sql]INSERT INTO `table` VALUES ('');[/sql]
А я ожидал VALUES (null) или хотя бы VALUES (0)
Для чего тогда в PDOStatement::bindParam указывается data_type третьим аргументом?
Имеется MySQL 5.0 и таблица:
[sql]
CREATE TABLE `table` (
`name` int(11) default NULL
) ENGINE=MyISAM;
[/sql]
И добавление записи в эту таблицу:
PHP:
$db = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $db->prepare("INSERT INTO `table` VALUES(:name)");
$value = '';
$stmt->bindParam('name', $value, PDO::PARAM_INT);
$stmt->execute();
SQLSTATE[01000]: Warning: 1264 Out of range value adjusted for column 'name' at row 1
Потому как выполняется запрос:
[sql]INSERT INTO `table` VALUES ('');[/sql]
А я ожидал VALUES (null) или хотя бы VALUES (0)
Для чего тогда в PDOStatement::bindParam указывается data_type третьим аргументом?