Я использую 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
(исполнители, релиз, ярлык, каталог, дата, треклист, тип, статус, голос, vote_count)'; $ sql. = 'VALUES (: artist,: release,: label,: catalog,: date,: tracklist,: type,: status,: vote,: vote_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, для правильного синтаксиса для использования рядом с «релизом, ярлыком, каталогом, датой, треклистом, типом, статусом, голосованием, vote_count) VALUE 'в строке 1 в C: \ Program Files \ Wamp \ WWW \ ближайший \ приложений \ контроллеры \ release.php на линии
PDO немного скрыт в отношении ошибок. Сначала откройте отчет об ошибках. Подробнее см. Здесь: http://www.php.net/manual/en/pdo.error-handling.php –
Вы также можете проверить значения в PDO :: errorCode() и PDO :: errorInfo() после утверждения был выполнен, чтобы увидеть, что такое ошибка. Лично я всегда устанавливал режим ошибок PDO на исключения. Я считаю, что это дает мне лучший контроль, поскольку возникает исключение при возникновении какой-либо ошибки. Затем я могу поймать это и обработать его в зависимости от приложения. – Jeremy