我正在尝试使用 php prepared 语句编辑/更新我的产品页面

I'm trying to edit/update my product page using php prepared statement

提问人:Abuchi 提问时间:1/27/2023 最后编辑:BarmarAbuchi 更新时间:1/27/2023 访问量:43

问:

我在尝试使用 php prepared 语句编辑/更新包含多个图像的产品页面时遇到问题。如果我的图像字段中只有一个图像,它将成功更新和取消链接旧图像,但由于我添加了 4(四)张图像,因此更新此图像给我带来了困难。请有人可以纠正我在这方面的错误吗?

下面是“插入”页面和“编辑”页面

这是我用来将产品插入数据库的代码

<?php
    include 'admin_config.php';

    if (isset($_POST['view'])) {

      $id           = $_POST['id'];
      $title        = $_POST['title'];
      $make         = $_POST['make'];
      $model        = $_POST['model'];
      $price        = $_POST['price'];
      $loc          = $_POST['loc'];
      $yr           = $_POST['yr'];
      $condi        = $_POST['condi'];
      $trans        = $_POST['trans'];
      $mileage      = $_POST['mileage'];
      $isfeatured   = $_POST['isfeatured'];
      $wheel        = $_POST['wheel'];
      $details      = $_POST['details'];

      $photo=$_FILES['image']['name'];
      $upload="uploads/".$photo;

      $photo2=$_FILES['image2']['name'];
      $upload2="uploads/".$photo2;

      $photo3=$_FILES['image3']['name'];
      $upload3="uploads/".$photo3;

      $photo4=$_FILES['image4']['name'];
      $upload4="uploads/".$photo4;

      $photo5=$_FILES['image5']['name'];
      $upload5="uploads/".$photo5;

      // form validation: ensure that the form is correctly filled
      $sql = "INSERT INTO vehicle     (id,title,make,model,price,loc,yr,condi,trans,mileage,isfeatured,wheel,details,photo,photo2,photo3,photo4,photo5) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

    $stmt=$conn->prepare($sql);
    $stmt->bind_param("isssssisssisssssss",$id,$title,$make,$model,$price,$loc,$yr,$condi,$trans,
    $mileage,$isfeatured,$wheel,$details,$upload,$upload2,$upload3,$upload4,$upload5);       
    $stmt->execute();
    move_uploaded_file($_FILES['image']['tmp_name'], $upload);
    move_uploaded_file($_FILES['image2']['tmp_name'], $upload2);
    move_uploaded_file($_FILES['image3']['tmp_name'], $upload3);
    move_uploaded_file($_FILES['image4']['tmp_name'], $upload4);
    move_uploaded_file($_FILES['image5']['tmp_name'], $upload5);

    $_SESSION['message'] = "Vehicle Added Successfully!"; 
   }

   ?>

    <section class="section">
      <div class="row">

        <div class="col-lg-12">

          <?php include ('message.php'); ?>

            <div class="card">
              <div class="card-body">
                <a href="add_property.php" class="btn btn-primary m-3" width="200px" >Add New Vehicle</a>
                <hr>

                <!-- No Labels Form -->
                  <form action="./add_vehicle.php" method="POST" class="row g-3" enctype="multipart/form-data">

                    <input type="hidden" name="id" value="<?php echo $row['id']; ?>">

                    <div class="col-md-6">
                        <label for="title" class="form-label">Title</label>
                        <input type="text" name="title" class="form-control">
                    </div>

                    <div class="col-md-6">
                        <label for="make" class="form-label">Make</label>
                        <input type="text" name="make" class="form-control">
                    </div>

                    <div class="col-md-6">
                        <label for="model" class="form-label">Model</label>
                        <input type="text" name="model" class="form-control">
                    </div>

                    <div class="col-md-6">
                        <label for="price" class="form-label">Price</label>
                        <input type="text" name="price" class="form-control">
                    </div>

                    <div class="col-md-6">
                        <label for="loc" class="form-label">Location</label>
                        <input type="text" name="loc" class="form-control">
                    </div>

                    <div class="col-md-6">
                        <label for="yr" class="form-label">Year</label>
                        <input type="text" name="yr" class="form-control">
                    </div>

                    <div class="col-md-6">
                        <label for="condi" class="form-label">Condition</label>
                        <select id="inputState" name="condi" class="form-select">
                            <option selected disabled value="">Select Condition</option>
                            <option value="New">New</option>
                            <option value="Foreign Used">Foreign Used</option>
                            <option value="Nigeria Used">Nigeria Used</option>
                        </select>
                    </div>

                    <div class="col-md-6">
                        <label for="trans" class="form-label">Transmission</label>
                        <select id="inputState" name="trans" class="form-select">
                            <option selected disabled value="">Select Transmission</option>
                            <option value="Automatic">Automatic</option>
                            <option value="Manual">Manual</option>
                        </select>
                    </div>

                    <div class="col-md-6">
                        <label for="mileage" class="form-label">Mileage</label>
                        <input type="text" name="mileage" class="form-control">
                    </div>

                    <div class="col-md-6">
                        <label for="isfeatured" class="form-label">isFeatured</label>
                        <select id="inputState" name="isfeatured" class="form-select">
                            <option selected disabled value="">Select isFeature</option>
                            <option value="1">Yes</option>
                            <option value="0">No</option>
                        </select>
                    </div>

                    <div class="col-md-6">
                        <label for="wheel" class="form-label">Wheel</label>
                        <input type="text" name="wheel" class="form-control">
                    </div>

                    <div class="col-md-12">
                        <label for="details" class="form-label">Description</label>
                        <textarea id="default" class="form-control" rows="8" name="details"></textarea>
                    </div><br><br>

                    <div class="col-md-6 justify-content-center">
                        <label for="customFile" class="form-label">Photo</label>
                        <input type="file" name="image" class="custom-file">
                    </div><br><br>

                    <div class="col-md-6 justify-content-center">
                        <label for="customFile" class="form-label">Photo2</label>
                        <input type="file" name="image2" class="custom-file">
                    </div><br><br>

                    <div class="col-md-6 justify-content-center">
                        <label for="customFile" class="form-label">Photo3</label>
                        <input type="file" name="image3" class="custom-file">
                    </div><br><br>

                    <div class="col-md-6 justify-content-center">
                        <label for="customFile" class="form-label">Photo4</label>
                        <input type="file" name="image4" class="custom-file">
                    </div><br><br>

                    <div class="col-md-6 justify-content-center">
                        <label for="customFile" class="form-label">Photo5</label>
                        <input type="file" name="image5" class="custom-file">
                    </div><br><br>

                    <div class="text-center">
                        <input type="submit" name="view" class="btn btn-primary btn-block" value="Add Product">
                        <input type="reset" name="clear" class="btn btn-secondary btn-block" value="Reset Product">
                    </div>
                  </form>
                  <!-- End No Labels Form -->

              </div>
            </div>

        </div>

      </div>
    </section>

  </main><!-- End #main -->

这是我的编辑页面

<?php

include 'admin_config.php';

$update=false;
$id           = '';
$title        = '';
$make         = '';
$model        = '';
$price        = '';
$loc          = '';
$yr           = '';
$condi        = '';
$trans        = '';
$mileage      = '';
$isfeatured   = '';
$wheel        = '';
$details      = '';
$photo        = '';
$photo2        = '';
$photo3        = '';
$photo4        = '';
$photo5        = '';


if(isset($_GET['id'])) {
 $id=$_GET['id'];

$sql="SELECT * FROM vehicle WHERE id=?";
$stmt=$conn->prepare($sql);
$stmt->bind_param("i", $id);
$stmt->execute();
$result=$stmt->get_result();
$row=$result->fetch_assoc();

$id           = $row['id'];
$title        = $row['title'];
$make         = $row['make'];
$model        = $row['model'];
$price        = $row['price'];
$loc          = $row['loc'];
$yr           = $row['yr'];
$condi        = $row['condi'];
$trans        = $row['trans'];
$mileage      = $row['mileage'];
$isfeatured   = $row['isfeatured'];
$wheel        = $row['wheel'];
$details      = $row['details'];
$photo        = $row['photo'];  
$photo2        = $row['photo2']; 
$photo3        = $row['photo3']; 
$photo4        = $row['photo4']; 
$photo5        = $row['photo5'];  

}


if (isset($_POST['update'])) {

$id           = $_POST['id'];
$title        = $_POST['title'];
$make         = $_POST['make'];
$model        = $_POST['model'];
$price        = $_POST['price'];
$loc          = $_POST['loc'];
$yr           = $_POST['yr'];
$condi        = $_POST['condi'];
$trans        = $_POST['trans'];
$mileage      = $_POST['mileage'];
$isfeatured   = $_POST['isfeatured'];
$wheel        = $_POST['wheel'];
$details      = $_POST['details'];
$oldimage     = $_POST['oldimage'];
$oldimage2     = $_POST['oldimage2'];
$oldimage3     = $_POST['oldimage3'];
$oldimage4     = $_POST['oldimage4'];
$oldimage5     = $_POST['oldimage5'];

if(isset($_FILES['image']['name'])&&($_FILES['image']['name']!="")){
 $newimage="uploads/".$_FILES['image']['name'];
 unlink($oldimage);
 move_uploaded_file($_FILES['image']['tmp_name'], $newimage);
 } 
if(isset($_FILES['image2']['name2'])&&($_FILES['image2']['name2']!="")){
 $newimage2="uploads/".$_FILES['image2']['name2'];
 unlink($oldimage2);
 move_uploaded_file($_FILES['image2']['tmp_name2'], $newimage2);
 } 
if(isset($_FILES['image3']['name3'])&&($_FILES['image3']['name3']!="")){
 $newimage3="uploads/".$_FILES['image3']['name3'];
 unlink($oldimage3);
 move_uploaded_file($_FILES['image']['tmp_name'], $newimage3);
 } 
if(isset($_FILES['image4']['name4'])&&($_FILES['image4']['name4']!="")){
 $newimage4="uploads/".$_FILES['image4']['name4'];
 unlink($oldimage4);
 move_uploaded_file($_FILES['image4']['tmp_name4'], $newimage4);
 } 
if(isset($_FILES['image5']['name5'])&&($_FILES['image5']['name5']!="")){
 $newimage5="uploads/".$_FILES['image5']['name5'];
 unlink($oldimage);
 move_uploaded_file($_FILES['image5']['tmp_name5'], $newimage5);
 } 
 else{
   $newimage=$oldimage;
   $newimage2=$oldimage2;
   $newimage3=$oldimage3;
   $newimage4=$oldimage4;
   $newimage5=$oldimage5;
  }

 // form validation: ensure that the form is correctly filled
 $sql = "UPDATE vehicle SET title=?,make=?,model=?,price=?,loc=?,yr=?,condi=?,trans=?,mileage=?,isfeatured=?,
wheel=?,details=?,photo=?,photo2=?,photo3=?,photo4=?,photo5=? WHERE id=?";
  $stmt=$conn->prepare($sql);
  $stmt
>bind_param("sssssisssisssssssi",$title,$make,$model,$price,$loc,$yr,$condi,$trans,$mileage,$isfeatured,
$wheel,$details,$upload,$upload2,$upload3,$upload4,$upload5,$id);       
  $stmt->execute();

  $_SESSION['message'] = "Vehicle Updated Successfully!"; 

  }

 ?>


<section class="section">
  <div class="row">

    <div class="col-lg-12">

      <?php include ('message.php'); ?>

        <div class="card">
          <div class="card-body">
            <a href="edit_vehicle.php" class="btn btn-primary m-3" width="200px" >Add New Vehicle</a>
            <hr>

              <!-- No Labels Form -->
              <form action="./edit_vehicle.php" method="POST" class="row g-3" enctype="multipart/form-data">

                <input type="hidden" name="id" value="<?php echo $row['id']; ?>">

                <div class="col-md-6">
                    <label for="title" class="form-label">Title</label>
                    <input type="text" name="title" class="form-control" value="<?=$title; ?>">
                </div>

                <div class="col-md-6">
                    <label for="make" class="form-label">Make</label>
                    <input type="text" name="make" class="form-control" value="<?=$make; ?>">
                </div>

                <div class="col-md-6">
                    <label for="model" class="form-label">Model</label>
                    <input type="text" name="model" class="form-control" value="<?=$model; ?>">
                </div>

                <div class="col-md-6">
                    <label for="price" class="form-label">Price</label>
                    <input type="text" name="price" class="form-control" value="<?=$price; ?>">
                </div>

                <div class="col-md-6">
                    <label for="loc" class="form-label">Location</label>
                    <input type="text" name="loc" class="form-control" value="<?=$loc; ?>">
                </div>

                <div class="col-md-6">
                    <label for="yr" class="form-label">Year</label>
                    <input type="text" name="yr" class="form-control" value="<?=$yr; ?>">
                </div>

                <div class="col-md-6">
                    <label for="condi" class="form-label">Condition</label>
                    <input type="text" name="condi" class="form-control" value="<?=$condi; ?>">
                </div>

                <div class="col-md-6">
                    <label for="trans" class="form-label">Transmission</label>
                    <input type="text" name="trans" class="form-control" value="<?=$trans; ?>">
                </div>

                <div class="col-md-6">
                    <label for="mileage" class="form-label">Mileage</label>
                    <input type="text" name="mileage" class="form-control" value="<?=$mileage; ?>">
                </div>

                <div class="col-md-6">
                    <label for="isfeatured" class="form-label">isFeatured</label>
                    <input type="text" name="isfeatured" class="form-control" value="<?=$isfeatured; ?>">
                </div>

                <div class="col-md-6">
                    <label for="wheel" class="form-label">Wheel</label>
                    <input type="text" name="wheel" class="form-control" value="<?=$wheel; ?>">
                </div>

                <div class="col-md-12">
                    <label for="details" class="form-label">Description</label>
                    <textarea id="default" class="form-control" rows="8"><?=$details; ?></textarea>
                </div><br><br>

                <div class="col-md-6 justify-content-center">
                    <input type="hidden" name="oldimage" value="<?= $photo; ?>">
                    <input type="file" name="image" class="custom-file">
                    <img src="<?= $photo; ?>" width="150" class="img-thumbnail">
                </div><br><br>

                <div class="col-md-6 justify-content-center">
                    <input type="hidden" name="oldimage2" value="<?= $photo2; ?>">
                    <input type="file" name="image2" class="custom-file">
                    <img src="<?= $photo2; ?>" width="150" class="img-thumbnail">
                </div><br><br>

                <div class="col-md-6 justify-content-center">
                    <input type="hidden" name="oldimage3" value="<?= $photo3; ?>">
                    <input type="file" name="image3" class="custom-file">
                    <img src="<?= $photo3; ?>" width="150" class="img-thumbnail">
                </div><br><br>

                <div class="col-md-6 justify-content-center">
                    <input type="hidden" name="oldimage4" value="<?= $photo4; ?>">
                    <input type="file" name="image4" class="custom-file">
                    <img src="<?= $photo4; ?>" width="150" class="img-thumbnail">
                </div><br><br>

                <div class="col-md-6 justify-content-center">
                    <input type="hidden" name="oldimage5" value="<?= $photo5; ?>">
                    <input type="file" name="image5" class="custom-file">
                    <img src="<?= $photo5; ?>" width="150" class="img-thumbnail">
                </div><br><br>

                <div class="text-center">
                    <input type="submit" name="update" class="btn btn-primary btn-block" value="Update Vehicle">
                    <input type="reset" name="clear" class="btn btn-secondary btn-block" value="Reset Vehicle">
                </div>
              </form>
              <!-- End No Labels Form -->
          </div>
        </div>

    </div>

  </div>
</section>
php html 图片 mysqli 预备语句

评论

0赞 Dharman 1/27/2023
你不觉得你包含了太多的代码吗?
1赞 Barmar 1/27/2023
仅供参考,您可以组合并融入isset($variable)$variable != ''if (!empty($variable))
1赞 Barmar 1/27/2023
$_FILES['image3']['name3']对于所有其他文件,都应该如此。$_FILES['image3']['name']
0赞 Abuchi 1/27/2023
好的,Barmar,我会这样做的。谢谢

答:

-1赞 Barmar 1/27/2023 #1

该块仅连接到 的最后一个块。elseifimage5

图像的每个语句都应该有自己的语句来设置对应的 。ifelse$newimageX$oldimageX

if(isset($_FILES['image']['name'])&&($_FILES['image']['name']!="")){
    $newimage="uploads/".$_FILES['image']['name'];
    unlink($oldimage);
    move_uploaded_file($_FILES['image']['tmp_name'], $newimage);
} else {
    $newimage = $oldimage;
}

if(isset($_FILES['image2']['name'])&&($_FILES['image2']['name']!="")){
    $newimage2="uploads/".$_FILES['image2']['name'];
    unlink($oldimage2);
    move_uploaded_file($_FILES['image2']['tmp_name'], $newimage2);
} else {
    $newimage2 = $oldimage2;
}

if(isset($_FILES['image3']['name'])&&($_FILES['image3']['name']!="")){
    $newimage3="uploads/".$_FILES['image3']['name'];
    unlink($oldimage3);
    move_uploaded_file($_FILES['image']['tmp_name'], $newimage3);
} else {
    $newimage3 = $oldimage3;
}

if(isset($_FILES['image4']['name'])&&($_FILES['image4']['name']!="")){
    $newimage4="uploads/".$_FILES['image4']['name'];
    unlink($oldimage4);
    move_uploaded_file($_FILES['image4']['tmp_name'], $newimage4);
} else {
    $newimage4 = $oldimage4;
}

if(isset($_FILES['image5']['name'])&&($_FILES['image5']['name']!="")){
    $newimage5="uploads/".$_FILES['image5']['name'];
    unlink($oldimage);
    move_uploaded_file($_FILES['image5']['tmp_name'], $newimage5);
} else {
    $newimage5 = $oldimage5;
}

评论

0赞 Abuchi 1/27/2023
非常感谢,但是当我编辑和提交时,我在数据库中找不到它.....看来我在某个地方犯了一个错误
0赞 Barmar 1/27/2023
有太多的代码让我无法涉足,这是唯一看起来明显错误的部分。
0赞 Abuchi 1/27/2023
非常感谢 Barmar,只是当我编辑和提交它时它从数据库中消失了,但我真的很感激您发现了我的问题。我正在交叉检查以发现为什么它在编辑后没有提交到数据库。
0赞 Barmar 1/27/2023
您应该启用 mysqli 错误报告。查看 stackoverflow.com/questions/22662488/...
0赞 Abuchi 1/27/2023
非常感谢,但是在添加错误报告后,它会在我使用的所有行中显示此错误消息(警告:unlink():......中的无效参数 unlink(oldimage);请问您知道这个错误是什么意思吗?警告:unlink():参数无效