«Неверный номер параметра» в PDO - PullRequest
0 голосов
/ 27 апреля 2018

Я делаю подготовленное заявление в PDO. Я получаю сообщение об ошибке, написанное ниже, и не знаю, где моя ошибка.

Ошибка !: SQLSTATE [HY093]: недопустимый номер параметра: число связанных переменных не соответствует количеству токенов

Код:

$qA=array();
$lastName=$_POST['cours'];

if(trim($_POST["nomActivity"]) != ""){
  $nomActivity= filter_var($_POST['nomActivity'], FILTER_SANITIZE_STRING);
  $qA[] = "a.title = :title";
}
if(trim($_POST["nPlace"]) != ""){
  $nPlace= filter_var($_POST['nPlace'], FILTER_SANITIZE_NUMBER_INT);
  $qA[] = "a.nPlace = :nPlaceA";
} 
if(isset($_POST['date'])){
  $date = $_POST['date'];
  $qA[] = "a.date = :date";
}

$stmtA = $con->prepare("UPDATE activity a SET " . implode(", ", $qA) . " where a.title= :lastN");

if(trim($_POST["nomActivity"]) != ""){
  $stmtA->bindParam(":title", $nomActivity);
} 
if(trim($_POST["nPlace"]) != ""){
  $stmtA->bindParam(":nPlaceA", $nPlace);
} 
if(trim($_POST["date"]) != ""){
  $stmtA->bindParam(":date", $date);
}
if(trim($_POST["cours"]) != ""){
  $stmtA->bindParam(":lastN", $lastName);
} 

$stmtA->execute();

1 Ответ

0 голосов
/ 27 апреля 2018

кажется, что вы пропустили правильную проверку для курсов

  if(trim($_POST["nomActivity"]) != ""){
    $nomActivity= filter_var($_POST['nomActivity'], FILTER_SANITIZE_STRING);
    $qA[] = "a.title = :title";
  }
  if(trim($_POST["nPlace"]) != ""){
    $nPlace= filter_var($_POST['nPlace'], FILTER_SANITIZE_NUMBER_INT);
    $qA[] = "a.nPlace = :nPlaceA";
  } 
  if(isset($_POST['date'])){
    $date = $_POST['date'];
    $qA[] = "a.date = :date";
  }

  // this one
  if(isset($_POST['cours'])){
    $lastName=$_POST['cours'];
  } else {
    $lastName = 'your_default_value';
  }

и у вас всегда есть: lastN для назначения

  $stmtA->bindParam(":lastN", $lastName);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...