2012-03-02 6 views
0

私の独自の関数を作成して、データベースにzendフレームワークでデータを追加しようとしています。しかし、私はデータベースへの接続に問題があります。zendframeworkを使用したデータベースへの接続

PS:Zend_Db_Table_Abstractクラスのデフォルト関数を使用するつもりはありません。自分のデータベースにアクセスするための独自の関数を作成することはありません。 Zend_Dbを使用して接続を行いたいだけです。

のapplication.ini:

database.adapter = PDO_MYSQL 
database.params.host = localhost 
database.params.username = root 
database.params.password = '' 
database.params.dbname = user 

のindex.php:ここ

は私の構成です

// Chargement automatique de Zend_Db_Adapter_Pdo_Mysql, et instanciation. 

$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', 'production'); 

$db = Zend_Db::factory($config->database->adapter,array(
    'host'  => $config->database->params->host, 
    'username' => $config->database->params->username, 
    'password' => $config->database->params->password, 
    'dbname' => $config->database->params->dbname, 
    ) 
); 

// placons la connexion dans un registre global à l'application 
$registry = Zend_Registry::getInstance(); 
$registry->set('db', $db); 

// en faire la connexion par defaut 
Zend_Db_Table::setDefaultAdapter($db); 
Zend_Registry::set('dbAdapter', $db); 

そして、私の機能は次のとおりです。

public function SaveClient() { 

    $sqlInsert = "INSERT INTO user VALUES ('".$this->getid()."','".$this->getprenom()."','".$this->getnom()."','".$this->getnele()."','". $this->getville()."')"; 
    } 

そして最後にアクション:

public function indexAction() 
    { 
     $user=new UserClass(); 
     $user->setid(2); 
     $user->setnele(fevrier); 
     $user->setnom(mhamdi); 
     $user->setprenom(marwa); 
     $user->setville(bizerte); 

     $result=$user->SaveClient(); 

     $this->view->add_result =var_dump($result) ; 
    } 
+0

は、接続に問題は何ですか?例外または特定のエラーが発生していますか?また、 'table data gateway'と行データゲートウェイのパターンを実際に使用せずに使用することにも非常に近いです。より良い挿入方法については、Zend_Db_Tableの[Inserting Data](http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.insert)を参照してください。もしあなたがいない場合は、[クイックスタート - モデルとdbtableの作成](http://framework.zend.com/manual/en/learning.quickstart.create-model.html)を参照してください。 – drew010

+0

いいえ、私はエラーが表示されませんが、私はデータベースに情報を挿入することはできませんので、おそらく、クエリが正しいため、接続のためです。 –

+0

私は理解できませんが、なぜブートストラップではなくindex.phpに工場接続がありますか?あなたのapplication.iniでは、dbパラメータは "database"の代わりに "resources.db"であるべきではありませんか? – RockyFord

答えて

2

あなたはquery()機能を使用することができます。

$dbAdapterあなたはZend_Db_Adapter_Abstractのインスタンス、(それがあなたの$ CONFIG->データベース - >アダプタです)... が、この機能で
public function SaveClient() { 

    $sqlInsert = "INSERT INTO user VALUES ('".$this->getid()."','".$this->getprenom()."','".$this->getnom()."','".$this->getnele()."','". $this->getville()."')"; 
    $dbAdapter->query($sqlInsert);   
} 

、 (あなたが見るように)何も返されません。あなたはこのようなこともネイティブ主キーのSQLクエリを使用している場合

しかしdrew010が言ったように、tabe data gatewayパターンを使用する方が良いでしょう。..

0

は:

public function SaveClient() { 

    $sqlInsert = "INSERT INTO user VALUES (null,'".$this->getprenom()."','".$this->getnom()."','".$this->getnele()."','". $this->getville()."')"; 
    $dbAdapter->query($sqlInsert);   
} 
関連する問題