2016-03-01 76 views
-1

我試圖通過CakePhp中的控制器將值插入表中。我先測試過。它說:已建立PDO連接,但未將記錄插入到CakePHp中

db connected successfully.

但是當我插入的東西到使用PDO預處理語句表,它顯示了像

Error: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound.

這裏的錯誤是我的表結構:

CREATE TABLE IF NOT EXISTS `test` (
    `id` int(10) unsigned NOT NULL, 
    `name` varchar(255) NOT NULL, 
    `job` varchar(255) NOT NULL 
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; 

的我在我的控制器中提到的功能是,

public function insdb() { 

    $sqlInsert = $this->User->query("INSERT INTO `test` (`name`, `job`) VALUES (:name1,:job1)"); 
    $preparedStatement = $conn->prepare($sqlInsert); 
    $preparedStatement->User->execute(array(':name1' => 'Tony', ':job1' => 'gardner')); 
} 
+0

這看起來不像CakePHP ... CakePHP使用ORM直接使用PDO。 – burzum

回答

0

您似乎混合使用CakePHP和純PDO語法。純PDO的方式是這樣的:

$preparedStatement = $conn->prepare(
     "INSERT INTO `test` (`name`, `job`) VALUES (:name1, :job1)"); 
$preparedStatement->execute(array(':name1' => 'Tony', ':job1' => 'gardener')); 

CakePHP的方式是這樣的,假設你的用戶模式設置正確,並映射到右表:

$this->User->create(); 
$this->User->save(array('name' => 'Tony', 'job' => 'gardener')); 

注:我假設id是您的表格的主鍵,即使這不包含在您提供的CREATE TABLE聲明中。