PHP插入SQL触发SQLSTATE[HY093]错误,寻求技术帮助
解决PDO插入数据时的SQLSTATE[HY093]错误
嘿,这个问题其实一眼就能找到症结——你的命名参数完全不匹配啦!
错误根源
先看你的SQL插入语句:
$sql = "INSERT INTO Pokedex(name, nickname, datefound) VALUES (:name, :nickname, :time);";
这里你给datefound字段绑定的参数是:time,但在后续的参数绑定数组里:
$params = array(":name" => $lcname, ":nickname" => $nickname, ":datefound" => $time);
你写的键是:datefound,和SQL里的:time完全对不上!PDO找不到对应的参数映射,自然就抛出了Invalid parameter number的错误。
修正后的代码
只需要把参数名统一即可,推荐和字段名保持一致(可读性更强),修改后的代码如下:
$sql = "INSERT INTO Pokedex(name, nickname, datefound) VALUES (:name, :nickname, :datefound);"; $stmt = $db->prepare($sql); $params = array(":name" => $lcname, ":nickname" => $nickname, ":datefound" => $time); $stmt->execute($params);
额外小提醒
另外要确保$time变量的格式符合MySQL DATETIME类型的要求,也就是YYYY-MM-DD HH:MM:SS格式,比如可以用date('Y-m-d H:i:s')生成合法的时间值,避免后续出现类型不匹配的问题。
内容的提问来源于stack exchange,提问作者Kaitlyn He
相关产品推荐
相关产品推荐

