php - 如何在PDo中插入数据

标签 php mysql insert pdo

我使用 PDO,但无法插入一些数据:

使用这段代码:

$sql  = 'INSERT INTO `releases` (id, artists, release, label, catalog, date, tracklist, type, status, vote, votes_count) ';
$sql .= 'VALUES (:id, :artists, :release, :label, :catalog, :date, :tracklist, :type, :status, :vote, :votes_count)';

$query = $this->db->prepare($sql);

$query->bindParam(':id', 0, PDO::PARAM_INT);
$query->bindParam(':artists', implode('|||', $data['artists']), PDO::PARAM_STR);
$query->bindParam(':release', $data['release'], PDO::PARAM_STR);
$query->bindParam(':label', $data['label'], PDO::PARAM_STR);
$query->bindParam(':catalog', $data['catalog'], PDO::PARAM_STR);
$query->bindParam(':date', $data['date'], PDO::PARAM_STR);
$query->bindParam(':tracklist', $data['tracklist'], PDO::PARAM_STR);
$query->bindParam(':type', $data['type'], PDO::PARAM_STR);
$query->bindParam(':status', $data['status'], PDO::PARAM_INT);
$query->bindParam(':vote', 0, PDO::PARAM_INT);
$query->bindParam(':votes_count', 0, PDO::PARAM_INT);

$query->execute();

但是数据没有插入到数据库中。所有名称均已检查且有效。 id 作为 AUTO_INCREMENT 字段。

如果我使用这段代码: $this->db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); $sql = 'INSERT INTO releases (artists, release, label, catalog, date, tracklist, type, status, vote, votes_count) '; $sql .= 'VALUES (:artists, :release, :label, :catalog, :date, :tracklist, :type, :status, :vote, :votes_count)';

$query = $this->db->prepare($sql);

$array = array(':artists'   => implode('|||', $data['artists']),
               ':release'   => $data['release'],
               ':label'     => $data['label'],
               ':catalog'   => $data['catalog'],
               ':date'      => $data['date'],
               ':tracklist' => $data['tracklist'],
               ':type'      => $data['type'],
               ':status'    => $data['status'],
               ':vote'      => 0,
               ':votes_count' => 0);

$query->execute($array);

我收到错误:
警告:PDOStatement::execute() [pdostatement.execute]:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有误;查看与您的 MySQL 服务器版本相对应的手册,了解在 C:\Program Files 中第 1 行的“release, label, catalog, date, tracklist, type, status, vote, votes_count) VALUE”附近使用的正确语法\Wamp\www\forthcoming\application\controllers\release.php89

最佳答案

datetypereserved words在 MySQL 中。

用反引号将字段名称括起来:

INSERT INTO `releases` (`id`, `artists`, `release`, `label`, `catalog`,
`date`, `tracklist`, `type`, `status`, `vote`, `votes_count`) ';

或重命名它们。

关于php - 如何在PDo中插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3954489/

相关文章:

php - 多表 mysql/php 查询,两个输出到一个数组

php页面查询需要15分钟,phpmyadmin上同样的查询需要3秒

java - MySql自动增量错误

Java,为 LinkedList 创建插入函数以按升序添加所有插入的元素

python - 插入 SQLite 数据库的行数为负数

php - 我的 PHP 生成的 CSV 文件保存为 PHP 文件

javascript - 如何使用 wp_localize_script 从另一个 php 文件传递​​参数

php - 检查 mysql_query() 是否返回任何结果的正确方法是什么?

创建表中的 MySQL 日期格式

java - 将数组的String元素随机插入二维数组Java