Почему я не могу использовать bindValue в переполнении стека

Я пытаюсь обновить свой код 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]: неверно
номер параметра: параметр не был определен

Может кто-нибудь сказать, что не так? Привет.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector