レコードを挿入できないだけですが、クエリ、更新、削除はすべて正常です。
テンプレート:
<html><head><title></title><meta charset="UTF-8"> <link rel="shorcut icon" href="favicon.ico" type="image/x-icon"></head><body><h1>日程表</h1><a href="__URL__/add/">添加新日程</a><table border="1" id="list"><tr> <td>ID</td> <td>日期</td> <td>时间</td> <td>具体事项</td> <td>是否完成</td> <td>操作</td></tr><volist name='list' id='vo'><tr> <td>{$vo.id}</td> <td>{$vo.year}-{$vo.month}-{$vo.day}</td> <td>{$vo.hour}:{$vo.minute}</td> <td>{$vo.description}</td> <td> <if condition="$vo.status eq Y">已完成 <else />未完成 </if> </td> <td> <if condition="$vo.status neq Y"> <a href="__URL__/update/id/{$vo.id}">标记为完成</a> </if> <a href="__URL__/del/id/{$vo.id}">删除</a> </td> </tr> </volist> </table> </body></html>
<html><head><title></title><meta charset="UTF-8"><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></head><body><h1>添加新日程</h1><form method="post" action="__URL__/insert">日期:<input type="text" name="year" size="4" />年<input type="text" name="month" size="2" />月<input type="text" name="day" size="2" />日<br/>时间:<input type="text" name="hour" size="2" />时<input type="text" name="minute" size="2" />分<br/>描述:<input type="text" name="description" /><br/><input type="hidden" name="status" value="N" /><br /><input type="submit" value="Submit" /></form></body></html>
<?phpclass IndexAction extends Action{ public function index() { $Calendar=new Model('Calendar'); $list=$Calendar->select(); $this->assign('list',$list); $this->display(); } public function add() { $this->display(); } public function insert() { $Calendar=new Model('Calendar'); $Calendar->Create(); $result=$Calendar->add(); $this->redirect('index'); } public function update() { if(isset($_GET['id'])) { $id=$_GET['id']; $Calendar=new Model('Calendar'); $Calendar->query("update calendar set status='Y' where id=$id"); $this->redirect('index'); } } public function del() { if(isset($_GET['id'])) { $id=$_GET['id']; $Calendar=new Model('Calendar'); $Calendar->query("delete from calendar where id=$id"); $this->redirect('index'); } }}?>
この文の実行結果が成功したかどうかを判定し、成功しなかった場合は $this->getErrors() を返します。理由が何であるかを確認します。
この文の実行結果が成功したかどうかを判断し、失敗した場合は $this->getErrors() を実行して理由を確認します。
この文には確かに誤りがありますが、echo $this->getErrors() という文はどこに追加されていますか?私は初心者です。 。 。システムはエラーを報告しませんでした。
print_r($Calendar);
exit();
SQL にエラーがある場合は、それを出力する必要があります
print_r($Calendar);
exit();
SQL にエラーがある場合は出力されます
これは出力結果です Model Object ( [_extModel:private] => ] => DbMysql オブジェクト ( [dbType:protected] => MYSQL [autoFree:protected] => [debug] => 1 [pconnect:protected] => [queryStr:protected] => SHOW COLUMNS FROM `calendar` [lastInsID:protected] => 8 [numCols:protected] => 0 [error:protected] => ] => 配列 ( [0] => リソース ID #13 ) [_linkID:protected] => リソース ID #14 [connected:protected] => 1 [比較:保護されている ] => 配列 ( [eq] => = [neq] => != [gt] => > > [egt] => > = [lt] => < [elt] = > <= [似ていない] => 好きではありません => 好き) [selectSql:protected] => %TABLE%%JOIN%%WHERE% %GROUP%% HAVING%%ORDER%%LIMIT% ) [pk:protected] => id [tableSuffix:protected] => [name:protected] =>保護されている] => [テーブル名:保護されている] => カレンダー [エラー:保護されている] => => 年 [2] => 月 [3] => ; 日 [4] => 時間 [5] => 説明 [_autoinc] => id ) => 配列 ( ) [オプション:保護] => 配列 ( ) [_自動:保護] => 配列 ( ) [_map:保護] =>
違法なデータ オブジェクト
具体的に教えていただけますか?これはコードの問題ではないはずです。ファイルを CD に直接入れても機能しません。
もしそうなら
うわー
この場合、
PHP code?12//$Calendar->Create(); $result=$Calendar->add(); で問題ありませんが、理由はわかりません。
//$Calendar->Create(); $result=$Calendar->add();
可能是表单令牌的问题
你是怎么从网页上提交表单的?
直接从页面上form submit 还是ajax post?
TP在使用 create的时候,有一个表单令牌验证
如果你的提交数据里面没有包含这个表单令牌,就会出错
说的很正确!!
可能是表单令牌的问题
你是怎么从网页上提交表单的?
直接从页面上form submit 还是ajax post?
TP在使用 create的时候,有一个表单令牌验证
如果你的提交数据里面没有包含这个表单令牌,就会出错
是form submit提交的,请问怎么包含这个表单令牌呢?
'TOKEN_ON'=>true, // 是否开启令牌验证 默认关闭
'TOKEN_NAME'=>'__hash__', // 令牌验证的表单隐藏字段名称
'TOKEN_TYPE'=>'md5', //令牌哈希验证规则 默认为MD5
'TOKEN_RESET'=>true, //令牌验证出错后是否重置令牌 默认为true
配置中加入令牌验证,那么所有的模板中的表单都会有一个hidden的字段提交到后台进行验证,你用了create创建数据对象,但是没开启TOKEN(默认关闭),那就验证失败,当然插入不进去。
建议安全级别不高的就用$DataObj->data($_POST)->add();
echo $Calendar->getLastSql();试试
能否将你数据库表结构贴出来看看,有可能是数据库的字段类型错了,该插入整形数据的时候插入字符串了。
引用 1 楼 sjh717142 的回复:$Calendar->Create();
判断下这句执行结果是否成功,不成功 echo $this->getErrors()看看是什么原因。
还真是这句话有错误,不过请问echo $this->getErrors()这句话加在哪里?我小白。。。系统并没有报错。
public function insert() { $Calendar=new Model('Calendar'); if($Calendar->create()){ $result=$Calendar->add(); $this->redirect('index'); } else { exit($Calendar->getError()); } }
还是多看看tp的使用手册,这样就避免像这样的错误。有问题请加qq群:7948162