PHP 之mysql空字符串问题
2013-10-31 10:40
218 查看
有一张user表如下所示:字段name不能为空。
现在在命令行上执行以下两条命令:
mysql> insert into user(name,age) value(null,null);
ERROR 1048 (23000): Column 'name' cannot be null
mysql> insert into user(name,age) value('',null);
Query OK, 1 row affected (0.00 sec)
mysql> insert into user(name,age) value("",null);
Query OK, 1 row affected (0.00 sec)
可以看出,当name为null时系统会提示错误,当name为 '' 和 "" 时就插入成功了。可以看出mysql不会把空字符串当作NULL来对待的。
对于PHP客户端向数据库中插入一条记录:(没有对表单字段进行一个逻辑判断)
当我什么也不输入直接提交是可以提交成功的。主要是我们的sql语句的问题:
如果我们没有在表单里填写数据,$name就是空,但是我们的sql语句对$name加上了单引号,此时对于mysql数据库就是一个空字符串而不是NULL,所以数据库不是报错。
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8
现在在命令行上执行以下两条命令:
mysql> insert into user(name,age) value(null,null);
ERROR 1048 (23000): Column 'name' cannot be null
mysql> insert into user(name,age) value('',null);
Query OK, 1 row affected (0.00 sec)
mysql> insert into user(name,age) value("",null);
Query OK, 1 row affected (0.00 sec)
可以看出,当name为null时系统会提示错误,当name为 '' 和 "" 时就插入成功了。可以看出mysql不会把空字符串当作NULL来对待的。
对于PHP客户端向数据库中插入一条记录:(没有对表单字段进行一个逻辑判断)
<?php if(!empty($_POST['submit'])){ require_once('MysqlTool.class.php'); $mysqli=new MysqlTool(); $name=$_POST['name']; $age=$_POST['age']; $sql="insert into user(name,age) values('$name',$age)"; echo $mysqli->execute_dql($sql); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="post"> Name:<input type="text" name="name"/><br/> Age:<input type="text" name="age"/><br/> <input type="submit" value="Submit" name="submit"/> </form> </body> </html>
当我什么也不输入直接提交是可以提交成功的。主要是我们的sql语句的问题:
$sql="insert into user(name,age) values('$name',$age)";
如果我们没有在表单里填写数据,$name就是空,但是我们的sql语句对$name加上了单引号,此时对于mysql数据库就是一个空字符串而不是NULL,所以数据库不是报错。
相关文章推荐
- Apache+mysql+php的安装问题
- php读mysql中文乱码问题解决方法
- PHP 多个mysql连接的问题
- [ 备忘 ] php 正则表达式与 mysql IN 查询的排序问题
- PHP+MySQL存储数据出现中文乱码的问题
- PHP-MYSQL中文乱码问题.
- 配置php的mysql环境遇到的问题
- mysql查询大量数据,php内存占用溢出问题
- mysql+apache+php======myphpamdin的问题:
- linux+nginx+mysql+php安装 以及常见问题得解决方案
- PHP将数据插入到Mysql时, 老插入失败的问题
- windows下配置NGINX+PHP+MYSQL (No input file specified 问题)
- 最近遇到的mysql php 中的各种中文乱码问题,记录一下
- Apache+PHP 无法加载 MySql 模块的问题
- 解决MySQL中文乱码问题|PHP+MySQL
- php mysql乱码问题
- Mybatis解决空字符串保存入Mysql数字字段的类型转换问题
- 编译安装php-5.6.19出现的问题configure: error: mysql configure failed. Please check config.log
- php环境搭建问题(简单记录二------php5.2不加载mysql扩展)
- MySQL 存储php中json_encode格式中文问题及解决