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代码中,直到它正常工作。感谢您的关注。。我犯了一个简单的错误,真是太傻了谢谢你注意到了。。我犯简单的错误是愚蠢的