21,886
社区成员
发帖
与我相关
我的任务
分享
public function insert() {
header('Content-type:text/html; charset=utf-8');
date_default_timezone_set('Etc/GMT-8');
$article = M('article');
$data = array();
$data['title'] = $_POST['title'];
$data['author'] = $_SESSION['username'];
$data['category'] = $_POST['category'];
$data['content'] = $_POST['content'];
$data['createtime'] = strtotime(date("Y-m-d"));
if($data['category'] == '请选择' || $data['title']=='') {
$this->error('数据写入不完整,请重新输入');
}
$result = $article->add($data);
}
public function insert($data,$options=array(),$replace=false) {
$values = $fields = array();
$this->model = $options['model'];
foreach ($data as $key=>$val){
$value = $this->parseValue($val);
if(is_scalar($value)) { // 过滤非标量数据
$values[] = $value;
$fields[] = $this->parseKey($key);
}
}
$sql = ($replace?'REPLACE':'INSERT').' INTO '.$this->parseTable($options['table']).' ('.implode(',', $fields).') VALUES ('.implode(',', $values).')';
$sql .= $this->parseLock(isset($options['lock'])?$options['lock']:false);
return $this->execute($sql);
}
中逐条检查数据是否正确
你用 execute 可以插入,只表示你手写的sql指令没有错误
而 add 方法插入失败则表示程序组装sql指令时出现了问题
<?php
class ArticleModel extends Model {
protected $_validate=array(
array('title','require', '标题不能为空'),
array('author','require', '作者必须要'),
array('category','require', '文章类型不能为空'),
array('content','require','文章内容不能为空'),
array('createtime','require','发表时间必须')
);
}
?>
我都测试好长时间了,为什么老是不行,难道是配置文件问题
要不我把我的ThinkPHP model的add()方法贴出来看看
我测试时读取数据可以,但插入和修改就出问题。。。
Thinkphp源码add方法,求指导:
public function add($data='',$options=array(),$replace=false) {
if(empty($data)) {
// 没有传递数据,获取当前数据对象的值
if(!empty($this->data)) {
$data = $this->data;
// 重置数据
$this->data = array();
}else{
$this->error = L('_DATA_TYPE_INVALID_');
return false;
}
}
// 分析表达式
$options = $this->_parseOptions($options);
// 数据处理
$data = $this->_facade($data);
if(false === $this->_before_insert($data,$options)) {
return false;
}
// 写入数据到数据库
$result = $this->db->insert($data,$options,$replace);
if(false !== $result ) {
$insertId = $this->getLastInsID();
if($insertId) {
// 自增主键返回插入ID
$data[$this->getPk()] = $insertId;
$this->_after_insert($data,$options);
return $insertId;
}
$this->_after_insert($data,$options);
}
return $result;
}