首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP PDO参数编号无效

PHP PDO参数编号无效
EN

Stack Overflow用户
提问于 2018-06-22 17:14:40
回答 1查看 79关注 0票数 0

下面是我的代码,我不能解决这个错误,我确实想把我的所有应用程序放在这里,但它太长了,我不能,所以我把它放在驱动器我只知道编程的基础知识,我的应用程序甚至不工作,所以没有什么可担心的https://drive.google.com/open?id=1n6q9PwPBXpJd1tmgR3nfXg_Caeba8g_g,这是我的完整应用程序我知道你不需要所有的代码,只是相关的,但我不知道什么是错的,所以我不知道什么是相关的,我会删除这个当你的帮助,如果它是必要的,谢谢大家。

代码语言:javascript
复制
<?php

 //link files

require 'db.php';
$message = '';
//get user input from the form

if (isset ($_POST['placa'])  &&  isset ($_POST['serialcarroria'])  &&  isset ($_POST['serialchasis'])  && isset ($_POST['serialmotor']) &&
 isset ($_POST['marca'])  &&  isset ($_POST['modelo'])  &&  isset ($_POST['year'])  && 
 isset ($_POST['color'])  &&  isset ($_POST['tipo'])  &&  isset ($_POST['uso'])  &&
 isset ($_POST['nropuestos'])  &&  isset ($_POST['nroejes'])  &&  isset ($_POST['capcarga'])  &&
 isset ($_POST['servicio']) ) {

 $placa = $_POST['placa'];
$serialcarroria = $_POST['serialcarroria'];
$serialchasis = $_POST['serialchasis'];
$serialmotor = $_POST['serialmotor'];
$marca = $_POST['marca'];
$modelo = $_POST['modelo'];
$year = $_POST['year'];
$color = $_POST['color'];
$tipo = $_POST['tipo'];
$uso = $_POST['uso'];
$nropuestos = $_POST['nropuestos'];
$nroejes = $_POST['nroejes'];
$capcarga = $_POST['capcarga'];
$servicio = $_POST['servicio'];  
      //SQL - add data to database
 $sql = 'INSERT INTO vehiculo(placa,serialcarroria,serialchasis,serialmotor,marca,modelo,year,color,tipo,uso,nropuestos,nroejes,capcarga,servicio) VALUES(:placa,:serialcarroria,:serialchasis,:serialmotor,:marca,:modelo,:year,:color,:tipo,:uso,:nropuestos,:nroejes,:capcarga,:servicio)';




  $statement = $connection->prepare($sql); //////<-PROBLEM ON THIS LINE//////
  if ($statement->execute([':placa' => $placa, ':serialcarroria' => $serialcarroria , ':serialchasis' => $serialchasis , ':serialmotor' => $serialmotor, ':marca' => $marca, ':modelo' => $modelo,':year' => $year, ':color' => $color, ':tipo ' => $tipo ,':uso ' => $uso  , ':nropuestos ' => $nropuestos , ':nroejes  ' => $nroejes  , ':capcarga ' => $capcarga  , ':servicio ' => $servicio]))  {
    $message = 'data inserted successfully';
  }

else {
  $message = 'Sorry, there has been a problem inserting your details..';
}

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-23 01:39:26

试试我下面的代码,看看它是否能工作。让我知道你得到了什么错误

在您的<form>中,只需放置一个名称为id的隐藏文本框,如下所示:

代码语言:javascript
复制
<form>
    <input type="hidden" name="id">
</form>

然后在PHP中执行以下操作:

代码语言:javascript
复制
<?php

$host = "localhost";
$user = "db_user";
$pass = "db_pass";
$db = "db_name";
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
try {
    $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ];
    $connection = new PDO($dsn, $user, $pass, $opt);

    if (isset($_POST['placa'])) {
        //I don't see a reason to have all of those isset...just make it so that there's one field that 
        //is absolutely required and cannot be left empty and work from there.

        $statement = $connection->prepare("INSERT INTO vehiculo (id, placa, serialcarroria, serialchasis, serialmotor, marca, modelo, year, color, tipo, uso, nropuestos, nroejes, capcarga, servicio)
        VALUES (:id, :placa, :serialcarroria, :serialchasis, :serialmotor, :marca, :modelo, :year, :color, :tipo, :uso, :nropuestos, :nroejes, :capcarga, :servicio)");
        $statement->bindParam(':id', $id);
        $statement->bindParam(':placa', $placa);
        $statement->bindParam(':serialcarroria', $serialcarroria);
        $statement->bindParam(':serialchasis', $serialchasis);
        $statement->bindParam(':serialmotor', $serialmotor);
        $statement->bindParam(':marca', $marca);
        $statement->bindParam(':modelo', $modelo);
        $statement->bindParam(':year', $year);
        $statement->bindParam(':color', $color);
        $statement->bindParam(':tipo', $tipo);
        $statement->bindParam(':uso', $uso);
        $statement->bindParam(':nropuestos', $nropuestos);
        $statement->bindParam(':nroejes', $nroejes);
        $statement->bindParam(':capcarga', $capcarga);
        $statement->bindParam(':servicio', $servicio);

        $id = $_POST['id'];
        $placa = $_POST['placa'];
        $serialcarroria = $_POST['serialcarroria'];
        $serialchasis = $_POST['serialchasis'];
        $serialmotor = $_POST['serialmotor'];
        $marca = $_POST['marca'];
        $modelo = $_POST['modelo'];
        $year = $_POST['year'];
        $color = $_POST['color'];
        $tipo = $_POST['tipo'];
        $uso = $_POST['uso'];
        $nropuestos = $_POST['nropuestos'];
        $nroejes = $_POST['nroejes'];
        $capcarga = $_POST['capcarga'];
        $servicio = $_POST['servicio'];

        if ($statement->execute()) {
            echo 'data inserted successfully';
        } else {
            echo 'Sorry, there has been a problem inserting your details..';
        }
    }
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}

$connection = null;
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50984618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档