【问题标题】:Uncaught exception: Invalid parameter number未捕获的异常:无效的参数号
【发布时间】:2009-12-29 21:41:36
【问题描述】:

我正在触发一个更新查询,该查询适用于一个页面,但不适用于另一个页面。

这是输出:

致命错误:带有消息的未捕获异常“Doctrine_Connection_Mysql_Exception” 'SQLSTATE[HY093]: 无效的参数号:绑定变量的数量与标记的数量不匹配' in C:\xampp\htdocs\fanyer\doctrine\lib\Doctrine\Connection.php:1084 堆栈跟踪: #0 C:\xampp\htdocs\fanyer\doctrine\lib\Doctrine\Connection\Statement.php(253): Doctrine_Connection->rethrowException(Object(PDOException), 对象(Doctrine_Connection_Statement)) #1 C:\xampp\htdocs\fanyer\doctrine\lib\Doctrine\Connection.php(1049): Doctrine_Connection_Statement->执行(数组) #2 C:\xampp\htdocs\fanyer\doctrine\lib\Doctrine\Query\Abstract.php(1091): Doctrine_Connection->exec('UPDATE users SE...', Array) #3 C:\xampp\htdocs\fanyer\doctrine\lib\Doctrine\Query\Abstract.php(1142): Doctrine_Query_Abstract->_execute(Array) #4 C:\xampp\htdocs\fanyer\doctrine\models\Users.php(122): Doctrine_Query_Abstract->execute() #5 C:\xampp\htdocs\fanyer\include\update_profile.inc.php(18): 用户->update_coach_details('', '', NULL, 'Select', 'dav', 'coach', '3') #6 在 C:\xampp\htdocs\fanyer\doctrine\lib\Doctrine\Connection.php 第 1084 行

这是我的代码:

public function update_coach_details($fname,$lname,$city,$state,$school,$rights,$user_id)
{
    return Doctrine_Query::create()
        ->update('Users')   
        ->set('f_name', '?', $fname)
        ->set('l_name', '?', $lname)
        ->set('city', '?', $city)
        ->set('state', '?', $state)
        ->set('school', '?', $school)
        ->set('rights', '?', $rights)
        ->where("id = '$user_id'")
        ->execute();
}

$account_type=$_SESSION['rights'];
$fname= $_POST['fname'];
$lname= $_POST['lname'];
$state= $_POST['state'];
$school= $_POST['school'];
$sports= $_POST['sports'];
$sports_array = explode(',',$sports);
$user_id=$_SESSION['user_id'];
$users= new Users();
$users->update_coach_details($fname,$lname,$city,$state,$school,$account_type,$user_id);

问题是我传递的参数造成的吗?

【问题讨论】:

  • 在我的情况下,它只是在参数中使用了错误的大小写,这使得它们与 sql 语句中定义的参数不匹配。

标签: php doctrine dql


【解决方案1】:

看起来您正在将未定义的变量 $city 传递给 update_coach_details。尝试在函数调用之前添加 $city = '' 之类的内容。

【讨论】:

    【解决方案2】:

    标记是 SQL 查询的一部分,它被传递给执行查询的函数的值替换(在这种情况下,它以数组的形式传递);错误消息说令牌比应该替换它们的值多。

    【讨论】:

      【解决方案3】:

      它的要点是你有一个准备好的语句,你正在尝试执行,但你没有提供所需的参数之一。

      但这就是我可以在没有看到实际查询和调用代码的情况下提供给您的所有信息。

      【讨论】:

        【解决方案4】:

        它适用于一个页面,而不适用于其他页面。

        比较update_coach_details() 的这两个页面的使用情况时,您发现了什么?正如此错误所暗示的,它们是否具有不同数量的参数:

        Invalid parameter number: number of bound variables does not  match number of tokens
        

        【讨论】:

          猜你喜欢
          • 2016-09-07
          • 1970-01-01
          • 1970-01-01
          • 2017-07-06
          • 2017-04-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多