2016-03-01 42 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声明中。