PHP无法更新SQLSTATE [HY093]:参数号无效:没有绑定参数

时间:2016-01-01 02:34:06

标签: php mysql

表格结构:

ex_id   int(11)  
ex_fecha    date     
ex_nombre   varchar(100)     
ex_apaterno varchar(100)     
ex_materno  varchar(100)     
ex_correo   varchar(100)     
ex_calle    varchar(100)     
ex_numero   varchar(5)   
ex_colonia  varchar(100)     
ex_ciudad   varchar(100)     
ex_telefono varchar(15)  
ex_celular  varchar(15)  
ex_sexo int(11)  
ex_nacimiento   date     
ex_religion int(11)  
ex_ocupacion    varchar(100)     
ex_reco_id  int(11)  
Indices
PRIMARY ex_id

我的更新查询:

$stmt = $this->db->prepare("UPDATE expedientes SET  `ex_nombre` = ?,
                                                            `ex_apaterno` = ?,
                                                            `ex_materno` = ?,
                                                            `ex_correo` = ?,
                                                            `ex_calle` = ?,
                                                            `ex_numero` = ?,
                                                            `ex_colonia` = ?,
                                                            `ex_ciudad` =?,
                                                            `ex_telefono` = ?,
                                                            `ex_celular` = ?,
                                                            `ex_sexo` = ?,
                                                            `ex_nacimiento` = ?,
                                                            `ex_religion` = ?,
                                                            `ex_ocupacion` = ?,
                                                            `ex_reco_id` = ?
                                                             WHERE `ex_id` = ?");

$stmt->bindparam('ssssssssssidisii',$nombre,$paterno,$materno,$umail,$calle,$numero,$colonia,$ciudad,$telefono,$celular,$sexo,$nacimiento,$religion,$ocupacion,$recomendado,$ex_id);
$stmt->execute();

1 个答案:

答案 0 :(得分:2)

删除$stmt->bindparam行,当您调用execute方法时,请执行以下操作:

$stmt->execute(array($nombre,$paterno,$materno,$umail,$calle,$numero,$colonia,$ciudad,$telefono,$celular,$sexo,$nacimiento,$religion,$ocupacion,$recomendado,$ex_id));

您正在使用bindParam错误,bindParam的第一个参数执行此操作:

  

参数标识符。对于使用命名占位符的预准备语句,这将是以下形式的参数名称:name。对于使用问号占位符的预准备语句,这将是参数的1索引位置。 Read more here

但是使用execute方法,第一个参数是:

  

具有与正在执行的SQL语句中的绑定参数一样多的元素的值数组。所有值都被视为PDO :: PARAM_STR。 Read more here