2017-02-04 5 views
-4

у меня есть этот кодSQLSTATE [HY093] Неверный номер параметра, все параметры соответствуют

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 все привязки соответствуют дате ase, так что я потерялся здесь, другие ответы были такими, как отсутствие, или что-то в этом роде, но на самом деле не вижу проблемы здесь.

+0

У вас есть лишняя запятая после ' ': cedula_old' => $ var2,', и ни на строке выше. – Qirel

+0

О, да, я тестировал, отправляя это, если удалено, я все равно получаю ту же ошибку. –

+0

'aseguradora_rif =: aseguradora_rif' У вас здесь есть дополнительное пространство –

ответ

-1

Вы забыли связываемые Params :)

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

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

Перед execute(), вам нужно "присваивают" значения соответствуют данным в массиве.

Ex:

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

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

$result = $stmt->execute(); 
+0

Позвольте мне предложить вам ответить только в областях, в которых вы испытываете –