Ошибка: SQLSTATE [HY093]: неверный номер параметра: параметр не был определен PDO - PullRequest
0 голосов
/ 27 мая 2018

Я новичок в PHP, и я разрабатываю API с SlimFramework 3

У меня есть этот метод POST

$app->post('/factura', function(Request $request, Response $response){
    $conn = PDOConnection::getConnection()
    try{
        $sql = "INSERT INTO bd_zapateria.factura
        (
          idCliente,
          idEmpleado,
          fechaFactura,
          subTotal,
          descuento,
          Impuesto,
          totalFactura)
          VALUES
          (:idCliente,
          :idEmpleado,
          :fechaFactura,
          :subtotal,
          :descuento,
          :Impuesto,
          :totalFactura)";

          $stmt = $conn->prepare($sql);

          $stmt->bindParam(':idCliente', $idCliente);
          $stmt->bindParam(':idEmpleado', $idEmpleado);
          $stmt->bindParam(':fechaFactura', $fechaFactura);
          $stmt->bindParam(':subTotal', $subTotal);
          $stmt->bindParam(':descuento', $descuento);
          $stmt->bindParam(':Impuesto', $Impuesto);
          $stmt->bindParam(':totalFactura', $totalFactura);

          $idCliente = (int) $request->getParam("idCliente");
          $idEmpleado = (int) $request->getParam("idEmpleado");
          $fechaFactura = $request->getParam("fechaFactura");
          $subTotal = (int) $request->getParam("subTotal");
          $descuento = (int) $request->getParam("descuento");
          $Impuesto = (int) $request->getParam("Impuesto");
          $totalFactura = (int) $request->getParam("totalFactura");


          $result = $stmt->execute();
          echo "New records created successfully";
          echo($result);
          $data['Factura'] = $result;

          $response = $response->withHeader('Content-Type','application/json');
          $response = $response->withHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Origin, Authorization');
          $response = $response->withHeader('Access-Control-Allow-Origin', '*');
          $response = $response->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH, OPTIONS');
          $response = $response->withStatus(200);
          $response = $response->withJson($data);
          return $response;
         }catch (PDOException $e) {
           $this['logger']->error("DataBase Error.<br/>" . $e->getMessage());
           echo "Error: " . $e->getMessage();
         } catch (Exception $e) {
           $this['logger']->error("General Error.<br/>" . $e->getMessage());
           echo "Error: " . $e->getMessage();
         } finally {
          // Destroy the database connection
           $conn = null;
      }
}); 

Когда я пытаюсь отправить значения, используя Почтальон,он возвращает эту ошибку:

Ошибка: SQLSTATE [HY093]: Неверный номер параметра: параметр не был определен

У меня правильные заголовки в Почтальоне

1 Ответ

0 голосов
/ 27 мая 2018

Заполнитель :subtotal не существует в привязках.Связанное имя :subTotal.Исправьте регистр в запросе или привязке, и он должен работать.

$stmt->bindParam(':subtotal', $subTotal);
...