4

これは、CI での 2 番目の Web アプリです。

フォームから(送信時に)単一の値を取得してデータベースに挿入しようとしています。

私はコントローラー「urlsubmission」を持っています:

<?php

class Urlsubmission extends CI_Controller{

    function index() {
          $this->load->model('domaincheckmodel');
          $this->domaincheckmodel->verifyduplicates();

    }
}
?>

モデル (domaincheckmodel) - データベースで重複を検索します。

<?php

    class Domaincheckmodel extends CI_Model{

        function __construct(){
            // Call the Model constructor
            parent::__construct();
        }


        function verifyduplicates(){
            #PREPARE DATA
            $sql = "SELECT tld from ClientDomain WHERE tld = ?";
            $postedTLD = $_POST['urlInput'];    // Get unsanitized data
            $endquery = $this->db->query($sql,array($this->db->escape_str($postedTLD))); // Query db

            #CONDITION
            if($endquery->num_rows() > 0){
                $this->load->view('err/domainexists'); ##domain already used
                ## please login..
            } 

            else{ #number of rows must be 0, insert into db
                $newDomain = "INSERT INTO ClientDomain(tld) VALUES('".$this->db->escape_str($postedTLD)."')";
                $this->load->view('success/domainfree');
                ## please register
            }
        }    
    }

    ?>

そして、現在 2 つのばかげたビュー: domainexists と domainfree:

ドメインが存在します:

<h2>Domain Exists</h2>

ドメインフリー:

<h2>Domain free</h2>

問題は、スクリプトを実行するとエラーは発生しませんが、else{}ブロックは正しく実行されますが、データベースには何も入力されません。

次のように、db lib を自動ロードするように config/autoload をセットアップしました。

$autoload['libraries'] = array('database');

ここで何が間違っていますか?

4

2 に答える 2

1

SQL クエリを実行していません。これを行う。

$newDomain = "INSERT INTO ClientDomain(tld) VALUES('".$this->db->escape_str($postedTLD)."')";
$this->db->query($newDomain);

または simple_query() を使用できます

$newDomain = "INSERT INTO ClientDomain(tld) VALUES('".$this->db->escape_str($postedTLD)."')";
$this->db->simple_query($newDomain);
于 2012-12-25T03:18:28.313 に答える
0

INSERT ステートメントを宣言しますが、実行しませんか?

于 2012-12-25T03:19:00.233 に答える