2009-12-29 31 views
1

我正在觸發一個適用於一頁但不適用於另一頁的更新查詢。未捕獲的異常:無效的參數編號

下面是輸出:

 
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

在我的情況下,它只是在參數中使用了錯誤的大小寫,這使得它們與sql語句中定義的參數不匹配。 – Kzqai 2012-01-11 21:44:10

回答

4

看起來你正在傳遞未定義的變量$cityupdate_coach_details。嘗試在函數調用之前添加類似$city = ''的內容。

+0

thinks我didint注意到... ... – 2009-12-29 21:58:35

0

它的要點是你有一個你準備執行的準備好的語句,但是你沒有提供所需的參數。

但是,這是關於我可以給你沒有看到實際的查詢和調用代碼的所有信息。

0

Its working for one page and not working on other one.

當你比較這兩頁使用update_coach_details()時,你發現了什麼?它們可以具有不同數目的參數,由該誤差所建議:

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

令牌是被從傳遞給執行查詢(其在這種情況下是函數值代替SQL查詢的該部分傳入一個數組);錯誤消息表示有更多的令牌比應該替換它們的值更多。

相關問題