我正在触发一个适用于一个页面的更新查询,但不适用于另一个页面。
这是输出:
Fatal error: Uncaught exception 'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in C:\xampp\htdocs\fanyer\doctrine\lib\Doctrine\Connection.php:1084 Stack trace: #0 C:\xampp\htdocs\fanyer\doctrine\lib\Doctrine\Connection\Statement.php(253): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Statement)) #1 C:\xampp\htdocs\fanyer\doctrine\lib\Doctrine\Connection.php(1049): Doctrine_Connection_Statement->execute(Array) #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): Users->update_coach_details('', '', NULL, 'Select', 'dav', 'coach', '3') #6 in C:\xampp\htdocs\fanyer\doctrine\lib\Doctrine\Connection.php on line 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);
问题是由我传递的参数造成的吗?
答案 0 :(得分:4)
看起来您正在将未定义的变量$city
传递给update_coach_details
。尝试在函数调用之前添加$city = ''
之类的内容。
答案 1 :(得分:1)
标记是SQL查询的一部分,它被替换为传递给执行查询的函数的值(在本例中是在数组中传递);错误消息说有更多的标记而不是应该替换它们的值。
答案 2 :(得分:0)
它的要点是你有一个准备好的声明,你正在尝试执行,但你没有提供所需的参数之一。
但这是关于我可以给你的所有信息,而不会看到实际的查询和调用代码。
答案 3 :(得分:0)
它在一页上工作而不在另一页上工作。
当您比较update_coach_details()
这两页的使用情况时,您发现了什么?他们是否可以使用不同数量的参数,如此错误所示:
Invalid parameter number: number of bound variables does not match number of tokens