Цитирование инструкции MySQL INSERT - то же самое относится и к UPDATE:
Используйте ключевое слово DEFAULT, чтобы явно установить для столбца значение по умолчанию. Это облегчает написание операторов INSERT, которые присваивают значения всем столбцам, кроме нескольких, поскольку позволяет избежать написания неполного списка VALUES, который не содержит значения для каждого столбца в таблице. В противном случае вам придется выписать список имен столбцов, соответствующих каждому значению в списке VALUES.
Короче, если я напишу
INSERT INTO table1 (column1,column2) values ('value1',DEFAULT);
Вставлена новая строка со значением column2 в качестве значения по умолчанию - каким бы оно ни было -
Однако, если я готовлю и выполняю оператор в PHP:
$statement = $pdoObject->
prepare("INSERT INTO table1 (column1,column2) values (?,?)");
$statement->execute(array('value1','DEFAULT'));
Новая строка будет содержать «ПО УМОЛЧАНИЮ» в качестве текстового значения - если столбец может хранить текстовые значения.
Теперь я написал слой абстракции для PDO (он мне нужен), и чтобы обойти эту проблему, я планирую ввести
const DEFAULT_VALUE = "randomstring";
Так что я мог бы выполнять операторы так:
$statement->execute(array('value1',mysql::DEFAULT_VALUE));
И затем в методе, который выполняет связывание, я должен пройти через значения, которые отправляются для привязки, и если некоторые из них равны self::DEFAULT_VALUE
, действовать соответственно.
Я почти уверен, что есть лучший способ сделать это. Кто-нибудь еще сталкивался с подобными ситуациями?