Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未使用默认值创建表_Php_Mysql_Phpmyadmin_Default Value - Fatal编程技术网

Php 未使用默认值创建表

Php 未使用默认值创建表,php,mysql,phpmyadmin,default-value,Php,Mysql,Phpmyadmin,Default Value,我想创建一个名为review的表,其中包含一些默认值,如下代码所示: mysqli_query($link, "CREATE TABLE IF NOT EXISTS `review` ( `clients_id` int(15) NOT NULL AUTO_INCREMENT, `client_id` varchar(150) NOT NULL DEFAULT '', `rating` tinyint(2) NOT NULL

我想创建一个名为
review
的表,其中包含一些默认值,如下代码所示:

mysqli_query($link, "CREATE TABLE IF NOT EXISTS `review` (
            `clients_id` int(15) NOT NULL AUTO_INCREMENT,
            `client_id` varchar(150) NOT NULL DEFAULT '',
            `rating` tinyint(2) NOT NULL DEFAULT '0',
            `proj_date` date NOT NULL DEFAULT '0000-00-00',
            `proj_desc` text NOT NULL DEFAULT '',
            `photoname` text NOT NULL,
            `companyname` text NOT NULL,
            `feedback` text NOT NULL,
            `status` tinyint(1) NOT NULL DEFAULT '0',
            `emailid` varchar(100) NOT NULL DEFAULT '',
            `customratings` varchar(100) NOT NULL DEFAULT '',
            `photo_option` varchar(100) NOT NULL DEFAULT '',
            `title` varchar(100) NOT NULL DEFAULT '',
            `citation` varchar(100) NOT NULL DEFAULT '',
            `date_option` varchar(100) NOT NULL DEFAULT '',
            `rating_option` varchar(100) NOT NULL DEFAULT '',
            PRIMARY KEY (`clients_id`),
            FULLTEXT KEY `feedback` (`feedback`)
            ) ENGINE=MyISAM  AUTO_INCREMENT=1") or mysqli_error($link);
此表的列应包含默认值,但若未创建“写入默认值”表,则应包含默认值

现在,我将代码替换为删除以下默认值:

mysqli_query($link, "CREATE TABLE IF NOT EXISTS `review` (
        `clients_id` int(15) NOT NULL AUTO_INCREMENT,
        `client_id` varchar(150) NOT NULL,
        `rating` tinyint(2) NOT NULL,
        `proj_date` date NOT NULL,
        `proj_desc` text NOT NULL,
        `photoname` text NOT NULL,
        `companyname` text NOT NULL,
        `feedback` text NOT NULL,
        `status` tinyint(1) NOT NULL,
        `emailid` varchar(100) NOT NULL,
        `customratings` varchar(100) NOT NULL,
        `photo_option` varchar(100) NOT NULL,
        `title` varchar(100) NOT NULL,
        `citation` varchar(100) NOT NULL,
        `date_option` varchar(100) NOT NULL,
        `rating_option` varchar(100) NOT NULL,
        PRIMARY KEY (`clients_id`),
        FULLTEXT KEY `feedback` (`feedback`)
        ) ENGINE=MyISAM  AUTO_INCREMENT=1") or mysqli_error($link);
现在表的创建非常完美,如果继续使用这个表(没有默认值),我在插入数据时会遇到
1364mysql错误

我通过删除phpmyadmin中sqlmode设置的STRICT_TRANS_表临时修复了此问题

我还尝试先创建表,然后使用ALTERTABLE将默认值添加到表中,但这只能执行一次,对于冗长的数据库来说是不正确的

但我不想更改我的phpmyadmin设置并创建具有默认列值的表。我该怎么做?我哪里做错了

谢谢


Nawaz Ghori

它肯定不会保存到数据库中,因为字段
列名称
(可能还有其他一些字段)被选中为“NOTNULL”。这意味着该字段的值必须不是NULL(NULL-根本没有数据)

这意味着您有两种选择:

将字段标记为NULL(首先检查字段是否需要有值)

ALTER TABLE your_TABLE CHANGE COLUMN your_field your_field VARCHAR(250)NULL
在字段中添加一个默认值,这样,如果插入中没有提供数据,它将放入您定义的内容。例如:

ALTER TABLE your_TABLE CHANGE COLUMN your_field your_field VARCHAR(250)NOT NULL DEFAULT'some_DEFAULT_value'


当然,将您的字段类型与您要更改的字段相匹配。

它肯定不会保存到数据库中,因为字段
列名(可能还有其他一些列名)被选中为“NOTNULL”。这意味着该字段的值必须不是NULL(NULL-根本没有数据)

这意味着您有两种选择:

将字段标记为NULL(首先检查字段是否需要有值)

ALTER TABLE your_TABLE CHANGE COLUMN your_field your_field VARCHAR(250)NULL
在字段中添加一个默认值,这样,如果插入中没有提供数据,它将放入您定义的内容。例如:

ALTER TABLE your_TABLE CHANGE COLUMN your_field your_field VARCHAR(250)NOT NULL DEFAULT'some_DEFAULT_value'


当然,将字段类型与要更改的字段相匹配。

SQL有几个问题。首先,您试图将默认日期设置为无效日期(“0000-00-00”不是有效日期)。同样对于文本字段,为什么要将其设置为默认值“”,您不能为一些字段类型设置默认值-文本就是其中之一()

所以

确实有效


但是-您可能需要为
项目日期设置一些特定日期

SQL有几个问题。首先,您试图将默认日期设置为无效日期(“0000-00-00”不是有效日期)。同样对于文本字段,为什么要将其设置为默认值“”,您不能为一些字段类型设置默认值-文本就是其中之一()

所以

确实有效


但是-您可能需要为
项目日期设置某些特定日期

问题之一可能是您在第一个块中遇到的问题是:

`rating` tinyint(2) NOT NULL DEFAULT '0',
....
`status` tinyint(1) NOT NULL DEFAULT '0',
相反,您需要使用不带引号的
0

............................ DEFAULT 0,   

此外,某些列未设置默认值,也为其设置默认值。

第一个块可能存在的问题之一是:

`rating` tinyint(2) NOT NULL DEFAULT '0',
....
`status` tinyint(1) NOT NULL DEFAULT '0',
相反,您需要使用不带引号的
0

............................ DEFAULT 0,   

另外,某些列不设置默认值,也为它们设置默认值。

空字符串的默认值可能不被允许。提示是尝试在phpmyadmin中运行SQL,这将显示任何错误,并允许您尝试不同的操作。然后将其包含在PHP代码中—如果您让它工作的话。空字符串的默认值可能不被允许。提示是尝试在phpmyadmin中运行SQL,这将显示任何错误,并允许您尝试不同的操作。然后将它包含在PHP代码中,直到它正常工作。感谢您的关注。。我犯了一个简单的错误,真是太傻了谢谢你注意到了。。我犯简单的错误是愚蠢的