
INSERT用于向一个已有的表中插入新行。INSERT…VALUES语句根据明确指定的值插入行。让我们先来看一下insert语句标准的定义,放在[]内的都是可以省略的:
语法
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
实例
create table links (name varchar(255) not null default '', address varchar(255) not null default '')
最简单的插入方法
代码如下
复制代码
Mysql>insert into worker values(‘tom’,’tom@yahoo.com’),(‘paul’,’paul@yahoo.com’)
或
insert into links values('jerichen','gdsz')
批量保存数据
假如我们想一次性的往数据库里插入多条数据咋办?一定要写多条语句吗?肯定是不会的,因为MySQL设计的还是很人性的。其提供insert语句的
一种非标准格式,即,values(字段值1,字段值2,字段值3),(另一个字段1的值,另一个字段2的值,另一个字段3的值)
# 同时插入两条数据,看语法说明,那个into被我省略了
代码如下
复制代码
insert links (name,url) values('jerichen','gdsz'),('alone','gdgz')
使用INSERT…SELECT语句插入从其他表选择的行
当我们在上一节学习创建表时,知道可以使用select从其它表来直接创建表,甚至可以同时复制数据记录。如果你已经拥有了一个表,你同样可以从select语句的配合中获益。
从其它表中录入数据,例如:
代码如下
复制代码
mysql>insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2
你也可以略去目的表的列列表,如果你每一列都有数据录入。
代码如下
复制代码
mysql>insert into tbl_name1 select col3,col4 from tbl_name2
INSERT INTO ... SELECT语句满足下列条件:
查询不能包含一个ORDER BY子句。
mysql_query执行insert报错举例说明:在语句后面添加echo mysql_error()可以看到具体的原因
如果是Out of range value adjusted for column 'ID' at row 1这个错误
则是因为新版本的MySQL对字段的严格检查导致的
解决方法:
1:修改my.ini,将
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
改为
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"。
重新启动MySQL。
2:在sql语句前加入mysql_query("set sql_mode=''")语句
有什么错误?你可以把执行时的sql语句echo出来,然后到数据库里面执行一下,看看有什么错误?
比如:
$sql="insert into tb_user (regname,regrealname,regpwd,regbirthday,regemail,regico,regsex,regqq,reghomepage,regsign, regintroduce,fig)values('$regname','$regrealname','$regpwd','$regbirthday','$regemail','$regico','$regsex','$regqq','$reghomepage','$regsign','$regintroduce',0)"
echo $sql//把这里echo出来的具体sql语句放到数据库里面执行一下看看有什么错误
$ret=mysql_query($sql,$link)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)