ホームページ > バックエンド開発 > PHPチュートリアル > thinkphp は add メソッドと save メソッドを呼び出すことができません

thinkphp は add メソッドと save メソッドを呼び出すことができません

WBOY
リリース: 2016-06-23 14:40:07
オリジナル
1518 人が閲覧しました

thinkphp が add メソッドを呼び出すと、http://localhost..../insert にアクセスできないというメッセージが表示されます

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);        }
ログイン後にコピー

//add() 行が print_r( を実行している場合、実行は停止します。 $data);
データが完全に出力されるため、$article->execute($sql)
を使用すると、データを挿入できます。


ディスカッションに返信 (解決策)

$article->add($data);

exit;

SQL を実行すると問題が発生します。 、
というプロンプトが表示され、以下のものはまったく表示されません。

デバッグ モードを開始します


insert メソッドを変更します

public function insert() {

die("ok");

}

Article/insert を呼び出して、プロンプトが何であるかを確認してください。


あなたが言ったように出力します: ok
私の問題はこれです、それはデータを渡します。
print_r($data);

$article->add($data); を追加せずに

$article->execute($aql) も使用します
SQL ステートメントをデータベースに挿入できます。データベースに
データがあります。これは私の PHP 6.0 バージョンに問題がありますか?
Thinkphp と競合します。ご回答ありがとうございます

//if($data['category'] == '選択してください' || $data['title']=='') {
//$this->error('書き込まれたデータは不完全です。再入力してください。
// }
$result = $article->add($data);

echo $article->getLastSql();もう一度試して、モデルが検証されているかどうかを確認してください。



$result = $article->add($data);
または、次のように変更します

私のモデルクラス:

<?php 	class ArticleModel extends Model {		protected $_validate=array(			array('title','require', '标题不能为空'),			array('author','require', '作者必须要'),			array('category','require', '文章类型不能为空'),			array('content','require','文章内容不能为空'),			array('createtime','require','发表时间必须')		);	} ?>
ログイン後にコピー

長い間テストしてきましたが、なぜいつも動作しないのでしょうか? ThinkPHP モデルの add() メソッドを投稿して確認してみてはいかがでしょうか?テストしたところ、データを読み取ることはできましたが、挿入したり、変更したりすると問題が発生します。 。 。

Thinkphp ソースコードの追加方法、ガイドしてください:

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;    }
ログイン後にコピー


問題は、ログファイルにレコードが見つからないことです。開始する方法がありません

    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);    }
ログイン後にコピー
の 773 行目付近で、データが正しいかどうかを 1 つずつ確認できますDb.class.phpのexecuteを使用して挿入できます。これは、手書きのSQL命令にエラーがないことを意味するだけです
そして、addメソッドの挿入に失敗したということは、プログラムがSQL命令をアセンブルするときに問題が発生したことを意味します

これをデバッグする方法はありません。 。 。

他の人の環境では実行できるのですが、私のappservに問題があるのでしょうか、それともPHPのバージョンに問題があるのでしょうか?

私は他の人の php5.2.8 バージョンを使用しており、完璧に動作しますが、私の php6.0 には問題があります。 。 。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート