Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/12/2012, 19:41
Montes28
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
ejecutar dos update desde funcion

hola amigos espero me puedan ayudar

tengo un formulario con un campo de 32 caracteres y deependiento de si se envian los 32 caracteres se realiza un update a una base de datos estoy tengo problemas para que me funcionen el update

Código PHP:
Ver original
  1. public function update_user($db)
  2.         {  
  3.             $id_usuarios = $_POST['id_usuarios'];
  4.             $nom_usuario = $_POST['nombre'];
  5.             $nom_apellido = $_POST['apellido'];
  6.             $usu_usuario = $_POST['usuario'];
  7.             $usu_telefono1 = $_POST['telefono1'];
  8.             $usu_telefono2 = $_POST['telefono2'];
  9.             $usu_correo = $_POST['correo'];
  10.             $usu_estado = $_POST['estado'];
  11.             $perfil = $_POST['perfil'];
  12.             $tamano=$_POST['clave'];
  13.             $result=strlen($tamano);
  14.             if($result==32){
  15. $upd = $db->prepare('UPDATE usuarios SET nom_usuario = :nom_usuario, nom_apellido = :nom_apellido, usu_usuario = :usu_usuario ,
  16.                                  usu_telefono1 = :usu_telefono1,usu_telefono2 = :usu_telefono2, usu_correo = :usu_correo, usu_estado = :usu_estado, perfil = :perfil
  17.                                  WHERE id_usuarios = :id_usuarios');
  18.                                  
  19.             $upd->bindParam(':id_usuarios', $id_usuarios);
  20.             $upd->bindParam(':nom_usuario', $nom_usuario);
  21.             $upd->bindParam(':nom_apellido', $nom_apellido);
  22.             $upd->bindParam(':usu_usuario', $usu_usuario);
  23.             //$upd->bindParam(':usu_clave', $usu_clave);
  24.             $upd->bindParam(':usu_telefono1', $usu_telefono1);
  25.             $upd->bindParam(':usu_telefono2', $usu_telefono2);
  26.             $upd->bindParam(':usu_correo', $usu_correo);
  27.             $upd->bindParam(':usu_estado', $usu_estado);
  28.             $upd->bindParam(':perfil', $perfil);
  29.             $upd->execute();
  30.             }else{
  31.            
  32.            
  33.             $usu_clave_bd = $_POST['clave'];
  34.             $usu_clave = $_POST['clave'];
  35.  
  36.    
  37.             $upd2 = $db->prepare('UPDATE usuarios SET nom_usuario = :nom_usuario, nom_apellido = :nom_apellido, usu_usuario = :usu_usuario ,usu_clave = :usu_clave,
  38.                                  usu_telefono1 = :usu_telefono1,usu_telefono2 = :usu_telefono2, usu_correo = :usu_correo, usu_estado = :usu_estado, perfil = :perfil
  39.                                  WHERE id_usuarios = :id_usuarios');
  40.                                  
  41.             $upd2->bindParam(':usu_clave', $usu_clave);      
  42.             $upd2->execute();      
  43.  
  44. $upd3 = $db->prepare("ALTER ROLE $usu_usuario PASSWORD '$usu_clave_bd'");
  45.             $upd3->execute();
  46.            
  47.             $_SESSION['clave_nueva'] = $usu_clave_bd ;
  48.            
  49.             }
  50.            
  51.            
  52.         }

estoy obteniendo este error

Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\volcanicos\models\user _Model.php on line 138

y esta es la linea $upd2->execute();

Última edición por Montes28; 05/12/2012 a las 20:59