Я пытаюсь обновить свой код PHP, привязав параметры с помощью PDOStatement :: bindValue.
Код получает массив с парами ключ-значение с теми же именами (ключами), что и поля в базе данных MySQL.
Стол похож на
CREATE TABLE `kund` (
`kund_nummer` smallint(6) NOT NULL AUTO_INCREMENT,
`fornamn` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL,
`efternamn` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL,
`telefon` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL,
`org_nummer` char(10) COLLATE utf8_unicode_ci DEFAULT NULL,
`utflyttdatum` date DEFAULT NULL,
`kommentar` varchar(75) COLLATE utf8_unicode_ci DEFAULT NULL,
`sparad_datum` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`kund_nummer`),
UNIQUE KEY `efternamn` (`efternamn`,`org_nummer`)
) ENGINE=MyISAM
AUTO_INCREMENT=69
DEFAULT CHARSET=utf8
COLLATE=utf8_unicode_ci |
И код PHP это:
…
$ fields = $ _POST;
…
$query = "INSERT INTO kund (";
foreach ($fields as $k => $v) {
$query .= $k . ",";
}
$query = substr($query, 0, -1);
$query .= ") VALUES (";
foreach ($fields as $k => $v) {
$query .= ":$k,";
}
$query = substr($query, 0, -1);
$query .= ")";
$stmt = $conn->prepare($query);
foreach ($fields as $k => $v){
$stmt->bindValue("':$k'",$v,PDO::PARAM_STR);
}try {
$stmt->execute();
} catch (PDOException $ex) {
if ($ex->getCode() == 23000) {
}
echo $ex;
}
Я получаю ошибку:
исключение «PDOException» с сообщением «SQLSTATE [HY093]: неверно
номер параметра: параметр не был определен
Может кто-нибудь сказать, что не так? Привет.
Задача ещё не решена.
Других решений пока нет …