Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php错误:SQLSTATE[HY093]:参数编号无效:未定义参数_Php_Sql Server_Pdo - Fatal编程技术网

php错误:SQLSTATE[HY093]:参数编号无效:未定义参数

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

我正在用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(){


我认为第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)
";