Pregunta

Estoy lanzando una consulta de actualización que funciona para una página, pero no para otra.

Aquí está el resultado:

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

Aquí está mi código:

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

¿El problema se debe a los parámetros que pasé?

¿Fue útil?

Solución

Parece que está de paso variable para indefinidos $city update_coach_details. Trate de añadir algo como $city = '' antes llamada a la función.

Otros consejos

Los tokens son la parte de la consulta SQL que se reemplazan a partir de los valores pasados ​​a la función que ejecuta la consulta (que, en este caso, se pasan en una matriz);el mensaje de error dice que hay más tokens que valores que deberían reemplazarlos.

El quid de la cuestión es que usted tiene una declaración preparada que está intentando ejecutar, pero no se está suministrando uno de los parámetros necesarios.

Pero eso es toda la información que le puede dar sin ver la consulta real y código de llamada.

  

Su trabajo para una página y no funciona a otro.

¿Qué encontró cuando se compararon con los dos páginas uso de update_coach_details()? Podrían tener diferente número de parámetros, como se sugiere en este error:

Invalid parameter number: number of bound variables does not  match number of tokens
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top