我试图通过CakePhp中的控制器将值插入表中。我先测试过。它说:
db连接成功。
但是当我通过预准备语句使用PDO将某些内容插入到表中时,它会显示错误,如
错误:SQLSTATE [HY093]:参数号无效:没有绑定参数。
这是我的表结构:
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 :(得分:0)
您似乎混合了CakePHP和纯PDO语法。纯PDO方式如下所示:
$preparedStatement = $conn->prepare(
"INSERT INTO `test` (`name`, `job`) VALUES (:name1, :job1)");
$preparedStatement->execute(array(':name1' => 'Tony', ':job1' => 'gardener'));
CakePHP方式如下所示,假设您的User模型设置正确并映射到右表:
$this->User->create();
$this->User->save(array('name' => 'Tony', 'job' => 'gardener'));
注意:我认为id
是您表格的主键,即使您提供的CREATE TABLE
声明中未包含此内容。