Ответ 1
Хм это должно работать
// connect to mysql and call the first query
mysql_query("SET SESSION sql_mode = 'TRADITIONAL'");
Настройки My MySQL server sql_mode
установлены на STRICT
. Я хочу изменить его на TRADITIONAL
для конкретного приложения, которое я разрабатываю. Однако мне не удалось сделать это на уровне сервера.
Можно ли изменить параметр sql_mode
во время выполнения из моих PHP-скриптов?
Хм это должно работать
// connect to mysql and call the first query
mysql_query("SET SESSION sql_mode = 'TRADITIONAL'");
РЕШЕНИЕ ДЛЯ WORDPRESS:
Для тех, кто хочет добиться результата в WordPress, мое решение следующее:
Поместите следующую функцию в файл functions.php вашей темы/главной страницы вашего плагина:
function get_zeroed_datetime() {
$modes = array("SET SESSION sql_mode = 'TRADITIONAL'");
global $wpdb;
$wpdb->set_sql_mode($modes);
return '0000-00-00 00:00:00';
}
При выполнении вставки в БД (например) используйте ее так:
$wpdb->insert('test_table',
array(
'verified_on' => get_zeroed_datetime()
),
array(
'%s'
));
где 'verified_on'
- это имя столбца в формате DATETIME.
ЧТО ДОСТИГНУТ КОД:
Если sql_mode
установлен на STRICT
на сервере, он не позволит вам вставить обнуленные значения в столбец DATETIME. Приведенный выше код помогает в решении этой проблемы.