2012-03-02 80 views
0

我试图创建我的owne函数来使用zend框架将数据添加到我的数据库。但是我与数据库的连接有问题。 PS:我不会在类Zend_Db_Table_Abstract中使用默认函数,我不会创建自己的函数来访问我的数据库。 我只想使用Zend_Db来完成连接。使用zendframework连接到数据库

这里是我的配置:

的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

什么是与连接问题?你是否遇到异常或特定的错误?您也非常接近使用“表格数据网关”和行数据网关模式,而无需实际使用它们。请参阅Zend_Db_Table中的[插入数据](http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.insert),以获得更好的插入方式。如果你还没有,你可能想看看[Quickstart - Creating a model and dbtable](http://framework.zend.com/manual/en/learning.quickstart.create-model.html)。 – drew010 2012-03-02 20:04:28

+0

没有我没有得到错误,但我不能将信息插入数据库,所以它可能是由于连接,因为查询是正确的。 – 2012-03-02 20:10:13

+0

我确定我不明白,但为什么在index.php中的工厂连接,而不是在Bootstrap?在你的application.ini应该不是数据库参数是“resources.db”而不是“数据库”? – RockyFord 2012-03-04 08:06:02

回答

2

可以使用query()功能:

public function SaveClient() { 

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

其中$dbAdapter是你的一个Zend_Db_Adapter_Abstract例如,(那是你的组$ config->数据库 - >适配器)... 不过这个功能, (如你所见)不会返回任何东西。

但作为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);   
}