1

初めて CI を使用して、この一見単純な問題に頭を悩ませています。私のクエリはレコードを挿入しません。

考えられる問題をデバッグしようとして、挿入コードが単純化されましたが、まだ満足していません。

基本的に、私は使用しています。

$data = array('post_post' => $this->input->post('ask_question'));
$this->db->insert('posts', $data); 

エラーは発生していません (ただし、別の CI 関連のトラウマのために config/database.php でエラーを無効にしている可能性があります :-$ )

使った

echo print $this->db->last_query();

以下に示すように、生成されたクエリを取得します。

INSERT INTO `posts` (`post_post`) VALUES ('some text')

このクエリを phpMyAdmin に貼り付けましたが、問題はありません。$this->db->query()上記の出力されたクエリを「手動で」実行するために使用しようとしましたが、レコードは挿入されません。

DB テーブル「posts」のスキームは、post_id と post_post の 2 つの列だけです。

ここで何が起こっているのかについての指針をいただければ幸いです...ありがとう

4

2 に答える 2

1

OK..CIをいじった後、解決しました。

永続的な接続をfalseに設定することで機能するようになりました。

$db['default']['pconnect'] = FALSE;

はぁ

于 2012-07-05T23:18:03.993 に答える
0

物事は一般的に問題ないように見えます。あなたが言ったことはすべてうまくいくはずです。私の最初の本能は、挿入しているものが SQL フィールドと互換性があることを確認することです。

クールな CI 機能です。CI Database Transactionクラスをご覧になることをお勧めします。トランザクションを使用すると、クエリをトランザクション内にラップできます。これは、失敗時にロールバックでき、エラー処理も簡単になります。

    $this->db->trans_start();
    $this->db->query('INSERT INTO posts ...etc ');
    $this->db->trans_complete();

    if ($this->db->trans_status() === FALSE)
    {
        // generate an error... or use the log_message() function to log your error
    }

または、insert を呼び出す代わりに、Insert SQL ステートメントを $this->db-> query (your_query_here) に入れることもできます。渡されたデータ配列を自動エスケープするQuery Binding と呼ばれる CI Query 機能があります。

それがどうなるか教えてください。これが役立つことを願っています!

于 2012-07-04T03:43:23.793 に答える