mysql严格模式Strict Mode怎么使用

    1.开启与关闭Strict Mode方法

    找到mysql安装目录下的my.cnf(windows系统则是my.ini)文件

    在sql_mode中加入STRICT_TRANS_TABLES则表示开启严格模式,如没有加入则表示非严格模式,修改后重启mysql即可

    例如这就表示开启了严格模式:

    如何在PHP中将JSON转换为数组对

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    2.Strict Mode功能说明
    • 不支持对not null字段插入null值

    • 不支持对自增长字段插入”值

    • 不支持text字段有默认值

    3.例子:

    创建数据表方便测试

    CREATE TABLE `mytable` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(20) NOT NULL,
    `content` text NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    1.not null字段插入null值测试

    插入一条记录,name的值为null

    在非严格模式下执行

    mysql>
    insert into mytable(content) values('
    programmer'
    );

    Query OK, 1 row affected, 1 warning (0.00 sec)

    mysql>
    select * from mytable;

    +----+------+------------+
    | id | name | content |
    +----+------+------------+
    | 1 | | programmer |
    +----+------+------------+
    1 row in set (0.00 sec)

    执行成功,name的值自动转为”

    在严格模式下执行

    mysql>
    insert into mytable(content) values('
    programmer'
    );

    ERROR 1364 (HY000): Field '
    name'
    doesn'
    t have a default value

    执行失败,提示字段name不能为null值

    2.自增长字段插入”值测试

    对id字段插入”值

    在非严格模式下执行

    mysql>
    insert into mytable(id,name,content) value('
    '
    ,'
    fdipzone'
    ,'
    programmer'
    );

    Query OK, 1 row affected, 1 warning (0.00 sec)

    mysql>
    select * from mytable;

    +----+----------+------------+
    | id | name | content |
    +----+----------+------------+
    | 1 | fdipzone | programmer |
    +----+----------+------------+
    1 row in set (0.00 sec)

    执行成功

    在严格模式下执行

    mysql>
    insert into mytable(id,name,content) value('
    '
    ,'
    fdipzone'
    ,'
    programmer'
    );

    ERROR 1366 (HY000): Incorrect integer value: '
    '
    for column '
    id'
    at row 1

    执行失败,提示字段id不能为”

    mysql>
    insert into mytable(id,name,content) value(null,'
    fdipzone'
    ,'
    programmer'
    );

    Query OK, 1 row affected (0.00 sec)

    mysql>
    select * from mytable;

    +----+----------+------------+
    | id | name | content |
    +----+----------+------------+
    | 1 | fdipzone | programmer |
    +----+----------+------------+
    1 row in set (0.00 sec)

    字段id为null则可执行成功

    3.text字段默认值测试

    创建一个数据表mytable,其中text设置默认值default=”

    在非严格模式下执行

    mysql>
    CREATE TABLE `mytable` (
    ->
    `id` int(11) NOT NULL AUTO_INCREMENT,
    ->
    `name` varchar(20) NOT NULL,
    ->
    `content` text NOT NULL default '
    '
    ,
    ->
    PRIMARY KEY (`id`)
    ->
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    Query OK, 0 rows affected, 1 warning (0.03 sec)

    mysql>
    show tables;

    +------------------------------+
    | Tables_in_test_version |
    +------------------------------+
    | mytable |
    +------------------------------+

    执行成功

    在严格模式下执行

    mysql>
    CREATE TABLE `mytable` (
    ->
    `id` int(11) NOT NULL AUTO_INCREMENT,
    ->
    `name` varchar(20) NOT NULL,
    ->
    `content` text NOT NULL default '
    '
    ,
    ->
    PRIMARY KEY (`id`)
    ->
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    ERROR 1101 (42000): BLOB/TEXT column '
    content'
    can'
    t have a default value

    执行失败,提示content字段是TEXT类型,不能使用默认值。

    使用MySQL的严格模式可以增强数据的安全性,但缺点是降低了对空数据入库的兼容性。建议开发环境使用严格模式以提高代码的质量及对数据的严谨性。



    JSON(JavaScript对象表示法)已成为当今流行的数据交换格式之一。它是一种轻量级的数据交换格式,易于阅读和编写,并且非常易于在JavaScript和PHP中使用。本文将介绍如何在PHP中将JSON数据转换为数组对象,以便于在Web应用程序中使用。
    1. JSON数据转换为PHP数组
    将JSON数据转换为PHP数组是一个非常简单的过程。以下是将JSON数据转换为PHP数组的代码示例:
    $jsonData = '{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}';
    $phpArray = json_decode($jsonData, true);
    上面的代码使用json_decode()函数将JSON数据转换为PHP数组。函数的第一个参数是要转换的JSON字符串。第二个参数是一个bool型的数据,用于指定是否将JSON数据转换为关联数组。如果将它设置为false,那么json_decode()函数将生成一个标准的PHP对象。
    2. JSON数据转换为PHP对象
    除了将JSON数据转换为PHP数组之外,我们还可以将其转换为一个PHP对象。以下是将JSON数据转换为PHP对象的代码示例:
    $jsonData = '{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}';
    $phpObj = json_decode($jsonData);
    上面的代码使用json_decode()函数将JSON数据转换为PHP对象。与数组一样,如果将第二个参数设置为true,则json_decode()函数将生成一个关联数组。
    3. JSON数据转换为对象数组
    有时候,我们需要将JSON数据转换为一个对象数组而不是一个单独的PHP对象。以下是将JSON数据转换为对象数组的代码示例:
    $jsonData = '[{\"name\":\"John\", \"age\":30, \"city\":\"New York\"},
    {\"name\":\"Jane\", \"age\":25, \"city\":\"Los Angeles\"},
    {\"name\":\"Bob\", \"age\":40, \"city\":\"Chicago\"}]';
    $phpArray = json_decode($jsonData);
    $objArray = array();
    foreach ($phpArray as $item) {
    $objArray[] = (object) $item;
    }
    上面的代码首先使用json_decode()函数将JSON数据转换为PHP数组。接着将数组中的每个项都转换为一个对象,并添加到新的对象数组中。
    结论
    在PHP中将JSON数据转换为数组或对象非常简单,只需使用json_decode()函数即可。如果需要将JSON数据转换为对象数组,则需要进行一些额外的处理。不管你想做什么,使用JSON格式来进行数据交换都是一个不错的选择。