【问题标题】:Uncaught PDOException未捕获的 PDOException
【发布时间】:2017-10-01 16:19:03
【问题描述】:

当我运行以下代码时,我收到此错误:

致命错误:未捕获的 PDOException:SQLSTATE[HY093]:无效参数编号:绑定变量的数量与 C:\xampp\htdocs\pizda\aids\admin\addnew.php 中的标记数量不匹配:73 堆栈跟踪: #0 在第 73 行

<?php

error_reporting( ~E_NOTICE ); // avoid notice

require_once 'dbconfig.php';

if(isset($_POST['btnsave']))
{
    $NaslovSrpski = $_POST['NaslovSrpski'];
    $NaslovEngleski = $_POST['NaslovEngleski'];
    $TekstSrpski = $_POST['TekstSrpski'];
    $TekstEngleski = $_POST['TekstEngleski'];


    $imgFile = $_FILES['user_image']['name'];
    $tmp_dir = $_FILES['user_image']['tmp_name'];
    $imgSize = $_FILES['user_image']['size'];


    if(empty($NaslovSrpski)){
        $errMSG = "Please Enter Username.";
    }
    else if(empty($NaslovEngleski)){
        $errMSG = "Please Enter Your Job Work.";
    }
    else if(empty($TekstSrpski)){
        $errMSG = "Please Enter Your Job Work.";
    }
    else if(empty($TekstEngleski)){
        $errMSG = "Please Enter Your Job Work.";
    }
    else if(empty($imgFile)){
        $errMSG = "Please Select Image File.";
    }
    else
    {
        $upload_dir = '../uploads/'; // upload directory

        $imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION)); // get image extension

        // valid image extensions
        $valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); // valid extensions

        // rename uploading image
        $userpic = rand(1000,1000000).".".$imgExt;

        // allow valid image file formats
        if(in_array($imgExt, $valid_extensions)){           
            // Check file size '5MB'
            if($imgSize < 5000000)              {
                move_uploaded_file($tmp_dir,$upload_dir.$userpic);
            }
            else{
                $errMSG = "Sorry, your file is too large.";
            }
        }
        else{
            $errMSG = "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";        
        }
    }


    // if no error occured, continue ....
    if(!isset($errMSG))
    {
        $stmt = $DB_con->prepare('INSERT INTO Obavestenja(NaslovSrpski,NaslovEngleski,TekstSrpski,TekstEngleski, Slika) VALUES(:naslovs, :naslove, :teksts, tekste, :upic)');
        $stmt->bindParam(':naslovs',$NaslovSrpski);
        $stmt->bindParam(':naslove',$NaslovEngleski);
        $stmt->bindParam(':teksts',$TekstSrpski);
        $stmt->bindParam(':tekste',$TekstEngleski);
        $stmt->bindParam(':upic',$userpic);

        if($stmt->execute())
        {
            $successMSG = "new record succesfully inserted ...";
            header("refresh:5;index.php"); // redirects image view page after 5 seconds.
        }
        else
        {
            $errMSG = "error while inserting....";
        }
    }
}
include 'header.php';
?>


<div class="container">


    <div class="page-header">
        <h1 class="h2">add news. <a class="btn btn-default" href="index.php"> <span class="glyphicon glyphicon-eye-open"></span> &nbsp; view all </a></h1>
    </div>


    <?php
    if(isset($errMSG)){
            ?>
            <div class="alert alert-danger">
                <span class="glyphicon glyphicon-info-sign"></span> <strong><?php echo $errMSG; ?></strong>
            </div>
            <?php
    }
    else if(isset($successMSG)){
        ?>
        <div class="alert alert-success">
              <strong><span class="glyphicon glyphicon-info-sign"></span> <?php echo $successMSG; ?></strong>
        </div>
        <?php
    }
    ?>   

<form method="post" enctype="multipart/form-data" class="form-horizontal">

    <table class="table table-bordered table-responsive">

    <tr>
        <td><label class="control-label">NaslovSrpski</label></td>
        <td><input class="form-control" type="text" name="NaslovSrpski" placeholder="NaslovSrpski" value="<?php echo $NaslovSrpski; ?>" /></td>
    </tr>

    <tr>
        <td><label class="control-label">NaslovEngleski</label></td>
        <td><input class="form-control" type="text" name="NaslovEngleski" placeholder="NaslovEngleski" value="<?php echo $NaslovEngleski; ?>" /></td>
    </tr>
     <tr>
        <td><label class="control-label">TekstSrpski</label></td>
        <td><textarea class="form-control" type="text" name="TekstSrpski" placeholder="TekstSrpski" value="<?php echo $TekstSrpski; ?>" /></textarea></td>
    </tr>
     <tr>
        <td><label class="control-label">TekstEngleski</label></td>
        <td><textarea class="form-control" type="text" name="TekstEngleski" placeholder="TekstEngleski" value="<?php echo $TekstEngleski; ?>" /></textarea></td>
    </tr>

    <tr>
        <td><label class="control-label">Profile Img.</label></td>
        <td><input class="input-group" type="file" name="user_image" accept="image/*" /></td>
    </tr>

    <tr>
        <td colspan="2"><button type="submit" name="btnsave" class="btn btn-default">
        <span class="glyphicon glyphicon-save"></span> &nbsp; save
        </button>
        </td>
    </tr>

    </table>

</form>

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:

    tekste 的占位符中缺少一个“:”:

    $stmt = $DB_con->prepare
            ('INSERT INTO Obavestenja' .
             ' (NaslovSrpski,NaslovEngleski,TekstSrpski,TekstEngleski, Slika)' .
             ' VALUES (:naslovs, :naslove, :teksts, :tekste, :upic)');
             # ":" was missing here ----------------^
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      • 2012-06-09
      相关资源
      最近更新 更多