成都创新互联网站制作重庆分公司

php插入空数据也能成功 php 获取$_post数据为空

thinkphp里面的add方法为什么我插入错误的表字段还是可以正常添加数据,错误的字段为空

因为mysql会从你要插入的表名里面增加一条数据,表名正确了,那么就会增加,而搜索到的字段就设为你设定的值,没搜索到的字段不会左改动,一般是默认值

成都创新互联公司专注于夏河企业网站建设,响应式网站建设,成都做商城网站。夏河网站建设公司,为夏河等地区提供建站服务。全流程按需求定制开发,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务

菜鸟问题,PHP向数据库写入数据,显示成功,但数据库还是空的,怎么回事?

这是因为写程序的人欺骗了你,他根本没检测是否成功,直接就告诉你成功。我们写程序的时侯千万别学他这样瞒上欺下,现在需要修改他的下面的三行语句:

$sql="INSERT INTO test (user,title,txt) VALUES ('$_POST[user]','$_POST[title]','$_POST[txt]');";

mysql_query($sql);

echo "Success";

修改为:

$sql="INSERT INTO test (user,title,txt) VALUES ('$_POST[user]','$_POST[title]','$_POST[txt]');";

if (mysql_query($sql)) echo "Success";

else echo "插入失败,SQL语句:$sqlbr错误信息:".mysql_error();

ThinkPHP add方法 使用以后插入空数据

添加数据add方法是CURD(Create,Update,Read,Delete / 创建,修改,读取,删除)中的 Create的实现,ThinkPHP 支持以普通数组方式和面向对象方式将数据写入数据表。

现在以操作 user 表数据的例子为例,来演示如何在 ThinkPHP 中实现对数据表的数据添加操作。

数组方式添加数据

例子: 在 IndexAction 控制器(Lib/Action/IndexAction.class.php),添加 insert()操作:

public function insert(){

header("Content-Type:text/html; charset=utf-8");

$Dao = M("User"); // 实例化模型类

// 构建写入的数据数组

$data["username"] = "休假";

$data["password"] = md5("123456");

$data["email"] = "123456@163.com";

$data["regdate"] = time();

// 写入数据

if($lastInsId = $Dao-add($data)){

echo "插入数据 id 为:$lastInsId";

} else {

$this-error('数据写入错误!');

}

}

语法解读

M("User") 用于高效实例化一个数据模型(M 是 new Model 的简写,称为快捷方法),参数为要操作的表名。

接下来构建要保存数据的数组 $data 。

最后是用 add() 方法将数据写入库表,由于使用的是 M快捷方法,需要将 $data 数组传入 add() 方法。

add() 方法如果添加数据记录成功,返回的是新数据记录主键,可直接得到。

该例子实际运行的 SQL 为:

INSERT INTO user(username,password,email,regdate) VALUES ('休假','e10adc3949ba59abbe56e057f20f883e',

123456@163.com',1283612673)

对象方式添加数据

上面的方式是以构造数据数组的方式,将数据以参数形式传入add方法写入数据表。ThinkPHP 也支持以对象的方式将数据写入数据表,将上面的代码更改为:

public function insert(){

header("Content-Type:text/html; charset=utf-8");

$Dao = M("User"); // 实例化模型类

// 数据对象赋值

$Dao-username = "休假";

$Dao-password = md5("123456");

$Dao-email = "123456@163.com";

$Dao-regdate = time();

// 写入数据

if($lastInsId = $Dao-add()){

echo "插入数据 id 为:$lastInsId";

} else {

$this-error('数据写入错误!');

}

}

对象方式的数据以数据对象方式赋值,调用 add 方法写入数据时不需要传递参数。

表单数据智能写入create 方法

除了手动构造入库的数据集之外,ThinkPHP 还提供了自动创建数据对象的create() 方法。create() 方法将自动收集提交的表单数据并创建数据对象而无需人工干预,这在表单数据字段非常多的情况下更具优势。

将前文写入表单数据的例子用 create() 来实现:

public function insert2(){

header("Content-Type:text/html; charset=utf-8");

$Dao = M("User");

if($Dao-create()){

$Dao-password = md5($_POST["password"]);

$Dao-regdate = time();

if($lastInsId = $Dao-add()){

echo "插入数据 id 为:$lastInsId";

} else {

echo "数据写入错误!";

}

}else{

exit($Dao-getError().' [ a href="javascript:history.back()"返 回/a ]');

}

}

create() 创建数据对象后,将自动收集提交过来的表单数据。而表单数据可能需要经过一定加工(例如将密码加密)才能写入数据表,所以可以对数据对象的成员属性值根据进行修改或添加删除等。

提示:create() 创建的数据对象存放于内存,在执行入库动作(add() 或 save())之前,都可以进行修改。

在上面的例子里,create()方法 的行为和 date()方法 是一致。但 date() 方法只是简单的创建数据对象,但 create() 方法还具备:

令牌验证

数据自动验证

字段映射支持

字段类型检查

数据自动完成

等各种高级的数据功能,要完成这些高级数据模型功能,需要使用 D方法实例化数据模型。

php插入mysql数据表显示成功,表却为空

你的语句还没有执行过。

$insert="insert into `user`(`user_name`,`password`) values('$username','$password')";这一句的后面改成这样

$result=mysql_query($insert,$link);//执行insert语句

//判断执行结果

if($result){

echo "scriptalert('注册成功!');window.location.href='localhost/index.html';/script";

}

else{

echo "scriptalert('注册失败!');window.location.href='regist.php';/script";

}

为什么我的mysql数据库表设置了不能为空,但还是能通过PHP 浏览器 添加数据进去?

上午应该是给你回答类似的问题了

1、isset只要表单有name,那肯定返回true,应该用empty()来判断。

2、数据库虽然设置不能为空,但是表单提交过来的值,在插入的时候,转换为'',即空字符串了,所以还是会插入,如果是null,就不能插入数据库了

因此只需要把isset那里换成!empty()就可以了


当前名称:php插入空数据也能成功 php 获取$_post数据为空
网站链接:http://cxhlcq.com/article/dodhesd.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部