使用mysqli时,insert 语句与 select语句的区别
来源:互联网 发布:linux的finger命令 编辑:程序博客网 时间:2024/05/22 00:43
今天coding的时候,遇到了一个问题,直接贴代码:
$db_obj = db_conn::getDbinstance()->getDbConn();//插入$sql_reg = "insert into user (username, password, nickname, email,regdate) values (?,?,?,?,?)";if ( $stmt = $db_obj->prepare($sql_reg) ){ $stmt->bind_param('ssssd',$username,$pswd,$nickname,$email,$reg_time); if ( !$stmt->execute() ) { exit("0");//插入失败,用户名重复 } $stmt->close();}else{ exit(“11”);//数据库操作预编译失败 }
$db_obj = db_conn::getDbinstance()->getDbConn();$sql_check_username = "select password from user where username = ?";if ( $result = $db_obj->prepare($sql_check_username) ){ $result->bind_param("s",$username); $result->execute(); $result->bind_result($t_pswd); if( !$result->fetch() ){ exit("0");//用户名不存在 } $result->close();}else{ exit ("1");//数据库预编译错误}
这个过程就是遵照着官方文档给出的mysqli实例代码来做的。但是因为需要,加上了对预编译之后,语句是否执行成功了的一个判断。插入语句,因为用户名是unique的,所以,如果执行插入语句,插入相同的用户名,会出现error。同样,在查询语句中,如果查询的username 在数据库中不存在,那么就会给出error提示。
但是,开始的时候,我把这两个判断条件全部加给了对execute函数的判断。却发现,插入操作判断正常,而查询操作用错误数据却怎么也不会跳转到execute错误的判断里去。纠结了好长时间时候,将查询的语句判断改为对fetch()的判断(如上),就运行成功了。
问题就来了,insert产生的unique属性不符合的错误跟select语句产生的不存在错误不是同一种错误吗?
暂时没有找到答案,问题先挂上。求高手解答。
插入重复的带有unique属性的column是错误。会在execute语句返回错误信息。
Returns TRUE
on success or FALSE
on failure.
但是fetch()函数从官方给出的return值还是看不明白,
select一个不存在的值,是会返回NULL还是FALSE呢?如果是NULL,那么上面代码中的!result->fetch()是代表什么呢?继续存疑。
- 使用mysqli时,insert 语句与 select语句的区别
- INSERT INTO SELECT语句与SELECT INTO FROM语句区别
- INSERT INTO SELECT 和 SELECT INTO 语句的区别
- select ... into ... 与 insert into .... select .... 语句
- Select Into 与 Insert Into 两种临时表复制语句的区别
- 如何在INSERT语句中使用SELECT的结果
- 使用Insert Select语句批量插入数据
- 使用Insert Select语句插入记录
- 使用Java生成insert,select,update语句
- insert select 插入语句
- insert into select 语句
- oracle insert select语句
- insert into select 语句
- select into from与insert into select区别详解,sql语句复制表
- select into from与insert into select区别详解,sql语句复制表
- mysqli的prepare准备语句使用教程
- select into 和 insert into select 两种表复制语句区别
- select构造insert语句的脚本
- 守护进程
- SSH2整合之注解篇
- MySQL中EXPLAIN解释命令
- ECMAScript(JavaScript) 继承机制实现
- hadoop,hbase,hive 安装snappy压缩
- 使用mysqli时,insert 语句与 select语句的区别
- 是否需要创建索引的判定标准
- icmp简单实现
- Linux的版本
- emacs复制粘贴
- 遇到的问题-----网上下载的项目修改代码无效,不能相应的生成相应的页面内容
- 1 基本要点
- 第3章 一个简单的Maven项目
- Word使用技巧