我想知道是否有人对此错误的含义有任何想法
PDOStatement :: execute():SQLSTATE [HY093]:参数号无效: 绑定变量的数量与令牌Database.php的数量不匹配 在第95行
第83 - 97行database.php
ksort($data);
//$fieldNames = implode(', ', array_keys($data)); /// to be tested
$fieldNames = implode('`, `', array_keys($data));
$fieldValues = ':' . implode(', :', array_keys($data));
$sth = $WIdb->prepare("INSERT INTO $table (`$fieldNames`) VALUES ($fieldValues)");
foreach ($data as $key => $value) {
$sth->bindValue(":$key", $value);
}
$sth->execute();
$sth->closeCursor();
我的数据库插入
$this->WIdb->insert("WI_Members", array(
":email" => $user['email'],
":username" => strip_tags($user['username']),
":password" => $this->hashPassword($user['password']),
":full_name" => strip_tags($user['full_name']),
":birthday" => $full_birthday,
":gender" => $user['gender'],
":country" => $user['country'],
":confirmed" => $confirmed,
":confirmation_key" => $key,
":register_date" => date("Y-m-d")
));
尝试重新编码我的网站,停止sql注入,它通过了所有验证,
我做了VAR DUMP
["email"]=>
string(21) "test@googlemail.com"
["username"]=>
string(12) "warner"
["full_name"]=>
string(6) "Jules "
["password"]=>
string(128) "db0773097ac0e01005f698bc50488524f3bea68b545ad35aa8ac73ce5c3b447b82aebcab45763a650a9195caf11cf9e7fd3f6f67265f371702ef07128bb65cdf"
["confirm_password"]=>
string(128) "db0773097ac0e01005f698bc50488524f3bea68b545ad35aa8ac73ce5c3b447b82aebcab45763a650a9195caf11cf9e7fd3f6f67265f371702ef07128bb65cdf"
["gender"]=>
string(1) "m"
["birthmonth"]=>
string(2) "02"
["birthday"]=>
string(2) "22"
["birthyear"]=>
string(4) "1980"
["country"]=>
string(14) "United Kingdom"
["bot_sum"]=>
string(2) "10"
我看了几个论坛, 我已经尝试了一些比特,似乎什么都没有用,我24小时都在努力解决这个问题,所以我想在这里尝试新鲜可能会帮助lol
感谢大家的时间
答案 0 :(得分:0)
您的错误意味着查询中的项目数与值数组中的项目数不匹配。
您正在声明一定数量的参数,但数组的值与长度不同。
检查它们是否匹配并相应地修复以解决问题。