php错误:SQLSTATE[HY093]:参数编号无效:未定义参数
我正在用php和mssql(sql server)为我的项目制作一个API。我写了这段代码,但它给了我错误。我已经检查了参数和值,但没有发现问题。任何帮助都将不胜感激。 错误是:SQLSTATE[HY093]:无效参数编号:第40行的C:\wamp\www\sarfeh\api\objects\user.php中未定义参数 我已经在下面的代码中标记了第40行。 这就是$hash的功能:$2y$10$BTog4ZdjkrDsH9Hw/FjuD.myHiz61o6SOUDy4KuvoB2dGDQV9Vl4u 编辑: 如果我在没有散列的情况下传递密码(11111),这是可行的,但是通过散列我会得到错误 函数create(){php错误:SQLSTATE[HY093]:参数编号无效:未定义参数,php,sql-server,pdo,Php,Sql Server,Pdo,我正在用php和mssql(sql server)为我的项目制作一个API。我写了这段代码,但它给了我错误。我已经检查了参数和值,但没有发现问题。任何帮助都将不胜感激。 错误是:SQLSTATE[HY093]:无效参数编号:第40行的C:\wamp\www\sarfeh\api\objects\user.php中未定义参数 我已经在下面的代码中标记了第40行。 这就是$hash的功能:$2y$10$BTog4ZdjkrDsH9Hw/FjuD.myHiz61o6SOUDy4KuvoB2dGDQV9
我认为第40行应该是:
$stmt->bindParam(':password', $hash, PDO::PARAM_STR);
您不需要在参数名称周围加上
”
。在之前和之后删除”
:密码
。更改
$query = "INSERT INTO " . $this->table_name . "
(first_name,last_name,phone,password_hash)
values (:first_name,:last_name,:phone,':password')
";
到
删除
'
前后的:password
。将“(:first\u name,:last\u name,:phone,:password”)更改为“(:first\u name,:last\u name,:phone,:password)`。为什么在查询中给出':password”
?有关我删除的详细信息,请参考此错误更改为:Uncaught pdo异常:SQLSTATE[22001]:[Microsoft][SQL Server的ODBC驱动程序13][SQL Server]字符串或二进制数据将被截断。@ArashMohammadi您的$hash
变量长度在SQL Server中大于列宽。谢谢!这就是问题所在!在SQL Server中,密码\u hash字段为50,更改为250,有效!您为我节省了数小时谢谢!@Zhorov答案为我解决了问题,但感谢您提醒我参数如果你有任何帮助的话,你可以考虑投票赞成:
$query = "INSERT INTO " . $this->table_name . "
(first_name,last_name,phone,password_hash)
values (:first_name,:last_name,:phone,':password')
";
$query = "INSERT INTO " . $this->table_name . "
(first_name,last_name,phone,password_hash)
values (:first_name,:last_name,:phone,:password)
";