已建立PDO连接但记录未插入Cakephp中

时间:2016-03-01 05:26:15

标签: mysql pdo insert

我试图通过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'));
}

1 个答案:

答案 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声明中未包含此内容。