php 形式的 POST、move_uploaded_file、sql 查询错误

POST, move_uploaded_file, sql query error in php form

提问人:steven ndengi 提问时间:11/1/2023 最后编辑:ADysonsteven ndengi 更新时间:11/1/2023 访问量:94

问:

所以我正在为一个相对简单的电子商务网站做一个项目。我一直在尝试实现一个表单,允许用户在上述网站上发布产品并附加图像。我设置了一个条件来检查它是否为空,它工作得很好,但是当不满足该条件时,else 子句似乎没有执行

这是零件代码;

<?php
include('../Includes/connect.php');

    if(isset($_POST['insert_product'])){
    $prod_title=$_POST['product_title'];
    $desc=$_POST['description'];
    $kw=$_POST['product_keywords'];
    $prod_cat=$_POST['product_category'];
    $price=$_POST['product_price'];
    $prod_status='true';

    //images
    $p_img1=$_FILES['product_image1'] ['name'];
    $p_img2=$_FILES['product_image2'] ['name'];
    $p_img3=$_FILES['product_image3'] ['name'];
    
    //image temp name
    $tmp_img1=$_FILES['product_image1'] ['tmp_name'];
    $tmp_img2=$_FILES['product_image2'] ['tmp_name'];
    $tmp_img3=$_FILES['product_image3'] ['tmp_name'];

    //checking empty conditions
    if($prod_title=='' or $desc=='' or $kw=='' or $prod_cat=='' or $price=='' or $p_img1=='' or   $p_img2=='' ){
        echo "<script>('Please fill all the available fields')</script>";
        exit();   
    }else{
        
        move_uploaded_file($tmp_img1,"../Images/prod_imgs/$p_img1");
        move_uploaded_file($tmp_img2,"../Images/prod_imgs/$p_img2");
        move_uploaded_file($tmp_img3,"../Images/prod_imgs/$p_img3");

        //insert query
        $insert_product = "insert into products (prod_title,prod_desc,prod_keyword,cat_id,prod_img1,prod_img2,prod_img3,date,status,price) 
        values('$prod_title','$desc','$kw','$prod_cat','$p_img1','$p_img2','$p_img3',NOW(),'$prod_status','$price')";

        $result_query=mysqli_query($con, $insert_product);
        if($result_query){
            echo "<script>alert('Successfully inserted product')</script>";
        }
    }
}
?>

和我的数据库:在这里输入图像描述

我尝试在 else 子句之前放置一个回声,它有效,它只在它不会执行的其他地方。它所做的只是将当前窗口重定向到空白页面,而不会弹出或出现错误

php html mysql if-statement 移动上传文件

评论

3赞 Greg 11/1/2023
“似乎没有执行”确实降低了你得到答案的机会。也许详细说明这部分?有错误吗?如果是这样 - 请共享堆栈跟踪。如果不是 - 你期望发生什么,会发生什么?
3赞 Ken Lee 11/1/2023
请将您的插入查询更改为参数化的预准备语句,该语句可抵御 SQL 注入
1赞 brombeer 11/1/2023
"还有我的数据库“,这看起来不像你的数据库
1赞 Avnee.Angel 11/1/2023
您错过了零件的脚本标签。alertif
2赞 droopsnoot 11/1/2023
该列不在您的查询中,但它在您的表定义中不能为 NULL,因此我预计这会导致问题。但这表明图像被正确移动,这不是我阅读您对问题描述的方式。rating

答:

-2赞 steven ndengi 11/1/2023 #1

显然,If 语句中的语法需要不同;

if($prod_title==" or $desc==" or $kw==" or $prod_cat==" or $price=="" or $p_img1==" or $p_img2=="){
  echo "<script>alert('Please fill all the available fields')</script>";
  exit();   

评论

1赞 brombeer 11/1/2023
这是无效的代码
0赞 Community 11/3/2023
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。