SQLSTATE [HY093]参数号无效,所有参数匹配

时间:2017-02-04 13:58:07

标签: php mysql pdo

我有这个代码

switch ($var1) {
case 'corredor':{
  $query = '  UPDATE corredor   
              SET 
                      cedula = :cedula,
                      nombres = :nombres,
                      apellidos = :apellidos,
                      fechanacimiento = :fechanacimiento,
                      telefono = :telefono,
                      correo = :correo,
                      direccion = :direccion,
                      fecharegistro = :fecharegistro,
                      estatus = :estatus,
                      aseguradora_rif =: aseguradora_rif
               WHERE cedula = :cedula_old
            ';
    $query_params = array(
        ':cedula' => $_POST['cedula'],
        ':nombres' => $_POST['nombres'],
        ':apellidos' => $_POST['apellidos'],
        ':fechanacimiento' => $_POST['fechanacimiento'],
        ':telefono' => $_POST['telefono'],
        ':correo' => $_POST['correo'],
        ':direccion' => $_POST['direccion'],
        ':fecharegistro' => $_POST['fecharegistro'],
        ':estatus' => $_POST['estatus'],
        ':aseguradora_rif' => $_POST['aseguradora_rif']
        ':cedula_old' => $var2
        );
    try {
        $stmt = $db->prepare($query);

        $result = $stmt->execute($query_params);
    } catch (PDOException $ex) {
        $ex->getMessage();
    }
    #header('Location: index.php?do=listacorredor');
    break;
} //fin case

我正在

  

SQLSTATE [HY093]:参数号无效:绑定变量数与令牌数不匹配

并且我不知道为什么,我的所有参数似乎都匹配,我已经在查询结束时寻找额外的参数并且params所有的绑定都匹配数据库名称所以我在这里丢失了,其他的答案是像缺失的东西,或类似的东西,但真的无法在这里看到问题。

1 个答案:

答案 0 :(得分:-1)

你忘了绑定params:)

http://php.net/manual/es/pdostatement.bindparam.php

http://php.net/manual/es/pdostatement.bindvalue.php

execute()之前,您需要"分配"将数据对应到数组中的值。

例如:

$stmt = $db->prepare($query);

$stmt->bindParam(':cedula', $_POST['cedula']);

$result = $stmt->execute();