为什么我不能在PHP中使用bindValue

时间:2016-10-18 18:40:55

标签: php mysql pdo binding

我试图通过使用PDOStatement :: bindValue绑定参数来更新我的PHP代码。

代码正在接收一个带有键值对的数组,其名称(键)与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 个答案:

没有答案