Yakalanmamış istisna: Geçersiz parametre numarası

4 Cevap php

Ben bir sayfa için çalışan bir güncelleştirme sorgusu ateş, ancak başka duyuyorum.

İşte çıkış bulunuyor:

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

İşte benim kod:

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);

Sorun benim iletilen parametreler tarafından neden?

4 Cevap

Eğer $city update_coach_details tanımsız değişken geçiyor gibi görünüyor. $city = '' önce işlev çağrısı gibi bir şey eklemeyi deneyin.

Belirteçleri (bu durumda bir dizide geçirilir,) sorgualamayı işlevine geçirilen değerlerle değiştirilir SQL sorgusunun parçası olan; hata mesajı bunları değiştirmeniz gerekir değerlerden daha fazla jeton olduğunu söyledi.

Bunun özü size yürütmek için çalışıyoruz hazırlanmış bir bildirimde bulunmamış olduğunu, ancak gerekli parametrelerden birini temin edilmez.

Ama ben gerçek sorgu görme ve çağrı kodu olmadan size verebilirim hakkında tüm bilgiler bulunuyor.

Onun bir sayfa için çalışan ve diğeri çalışmıyor.

Eğer bu iki sayfa kullanımını kıyaslandığında ne buldun update_coach_details()? Bu hata önerdiği gibi onlar, parametrelerin farklı sayıda olabilir:

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