【问题标题】:php error and even after defining variablephp错误,甚至在定义变量之后
【发布时间】:2018-04-29 23:48:33
【问题描述】:

这是我的项目插入产品的代码块

<?php
include('includes/db.php');
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
<html lang="EN">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="shortcut icon" href="images/logo.jpg" type="image/x-icon" />
<title>Insert Products</title>
<script src="https://cloud.tinymce.com/stable/tinymce.min.js"></script>
  <script>tinymce.init({ selector:'textarea' });</script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="css/bootstrap.min.css" />
<link rel="stylesheet" href="fontawesome/css/font-awesome.min.css" />
</head>
<body>

<div class="row">
<div class="col-lg-12">
 <ol class="breadcrumb">
<li class="active"><i class="fa fa-dashboard"></i>Dashboard/Insert Products</li>   

</ol> <!--breadcrumb ends here-->  
 </div> <!---col-lg-12 ends-->    
</div> <!--row ends-->


<div class="row">
<div class="col-lg-12">
 <div class="panel panel-default">
<div class="panel-heading">
 <h3 class="panel-title">
 <i class="fa fa-money fa-fw"></i> Insert Products  
</h3>    

</div> <!--panel heading ends--->    

<div class="panel-body">
 <form class="form-horizontal" method="post" enctype="multipart/form-data">
 <div class="form-group">
<label class="col-md-3 control-label" >Product title</label>
<div class="col-md-6">
<input type="text" name="product_title" class="form-control" required>      

</div>

</div> <!---form-group-->   

 <div class="form-group">
<label class="col-md-3 control-label" >Product Category</label>
<div class="col-md-6">
    <select name="product_cat" class="form-control" required>
<option>Select Category</option> 
<?php
$get_p_cats="select * from product_categories";
$run_p_cats=mysqli_query($conn,$get_p_cats);

while($row_p_cats=mysqli_fetch_array($run_p_cats)){
    $p_cat_id=$row_p_cats['p_cat_id'];
    $p_cat_title=$row_p_cats['p_cat_title'];

    echo "<option value='$p_cat_id'>$p_cat_title</option>";
}

?>


</select>      

</div>

</div> <!---form-group-->   


 <div class="form-group">
<label class="col-md-3 control-label" >Category</label>
<div class="col-md-6">
<select name="cat" class="form-control" required>     
<option>Select Category</option> 
<?php
$get_cat="select * from categories";
$run_cat=mysqli_query($conn,$get_cat);

while($row_cat=mysqli_fetch_array($run_cat)){
    $cat_id=$row_cat['cat_id'];
    $cat_title=$row_cat['cat_title'];

    echo "<option value='$cat_id'>$cat_title</option>";
}

?>  

    </select>
</div>

</div> <!---form-group-->   



 <div class="form-group">
<label class="col-md-3 control-label" >Product Image 1</label>
<div class="col-md-6">
<input type="file" name="product_img1" class="form-control" required>      

</div>

</div> <!---form-group-->   


 <div class="form-group">
<label class="col-md-3 control-label" >Product Image 2</label>
<div class="col-md-6">
<input type="file" name="product_img2" class="form-control" required>      

</div>

</div> <!---form-group-->   


<div class="form-group">
<label class="col-md-3 control-label" >Product Image 3</label>
<div class="col-md-6">
<input type="file" name="product_img3" class="form-control" required>      

</div>
 </div> <!---form-group--> 

  <div class="form-group">
<label class="col-md-3 control-label" >Product Price</label>
<div class="col-md-6">
<input type="text" name="product_price" class="form-control" required>      

</div>
 </div> <!---form-group-->    

 <div class="form-group">
<label class="col-md-3 control-label" >Product Keywords</label>
<div class="col-md-6">
<input type="text" name="product_keywords" class="form-control" required>      

</div>
 </div> <!---form-group-->  


 <div class="form-group">
<label class="col-md-3 control-label" >Product Description</label>
<div class="col-md-6">
<textarea name="product_desc" class="form-control" rows="6" cols="19" style="max-width:100%; max-height:100%;"></textarea>      

</div>
 </div> <!---form-group-->  


 <div class="form-group">
<label class="col-md-3 control-label" ></label>
<div class="col-md-6">
<input type="submit" name="submit" value="Insert Product" class="btn btn-primary form-control">     
</div>
 </div> <!---form-group-->

</form>   <!--form-horizontal ends--->

</div> <!--panel-body ends-->

</div>  <!---panel panel-default ends--> 

</div> <!--col-lg-12 ends--->    

</div>  <!--row 2 ends-->
</body>
</html>

<?php

if(isset($_POST['submit'])){
    $product_title=$_POST['product_title'];
    $product_cat=$_POST['product_cat'];
    $cat=$_POST['cat'];
    $product_price=$_POST['product_price'];
    $product_desc=$_POST['product_desc'];
    $product_keyword=$_POST['product_keywords'];

    $product_img1=$_FILES['product_img1']['name'];
    $product_img2=$_FILES['product_img2']['name'];
    $product_img3=$_FILES['product_img3']['name'];

    $temp_name1=$_FILES['product_img1']['tmp_name'];
    $temp_name2=$_FILES['product_img2']['tmp_name'];
    $temp_name3=$_FILES['product_img3']['tmp_name'];

    move_uploaded_file($temp_name1,"product_images/$product_img1");
    move_uploaded_file($temp_name2,"product_images/$product_img2");
    move_uploaded_file($temp_name3,"product_images/$product_img3");

$insert_product="insert into products(p_cat_id,cat_id,date,product_title,product_img1,product_img2,product_img3,product_price,product_desc,product_keywords) values( '$product_cat','$cat',NOW(),'$product_title','$product_img1','$product_img2','$product_img3','$product_price','$product_desc','$product_keyword')";


$run_product=mysqli_query($conn,$insert_product);

if($run_product){
    echo "<script>alert('Product has been inserted successfully')</script>";
    echo "<script>window.open('insert.php','self')</script>";
}
}
?>

即使在定义变量之后,我也会收到错误 Undefined index: product_price in C:\xampp\htdocs\RangProject\admin_area\insert_products.php 第 183 行 这是我的第 183 行

 $product_price=$_POST['product_price'];

谁能告诉我我的错误是什么? PHP 非常混乱且区分大小写。

【问题讨论】:

  • 警告:使用mysqli 时,您应该使用parameterized queriesbind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug切勿$_POST$_GET任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。
  • 注意:mysqli 的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query 接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)$db-&gt;prepare("…") 过程化接口是 PHP 4 时代引入 mysqli API 时的产物,不应在新代码中使用。
  • @hanuman hanu 我希望下面的答案能解决你的问题。
  • @Amanjaura 我知道我应该使用参数化查询和 bind_param。在我可以专注于安全性之前,我正在测试我的代码
  • @tadman stackoverflow.com/questions/50104663/…。有什么帮助???

标签: php html mysql


【解决方案1】:

在分配之前检查您的帖子是否为空。

$product_price = isset($_POST['product_price']) ? $_POST['product_price'] : '';

【讨论】:

  • 我把你的行放在我的代码中,但现在数据甚至没有进入数据库。页面刷新
【解决方案2】:

修正了我的错误。在从我收到的所有回复中听取了一些建议后,才添加了这个。谢谢大家。

$product_title=mysqli_real_escape_string($conn,$_POST['product_title']);
    $product_cat=mysqli_real_escape_string($conn,$_POST['product_cat']);
    $cat=mysqli_real_escape_string($conn,$_POST['cat']);
    $product_price =mysqli_real_escape_string($conn,$_POST['product_price']);
    $product_desc=mysqli_real_escape_string($conn,$_POST['product_desc']);
    $product_keyword=mysqli_real_escape_string($conn,$_POST['product_keywords']);

【讨论】:

  • 那是手动转义。这实际上比使用占位符值困难 10 倍,更不用说输入更多内容了。
【解决方案3】:

发生这种情况是因为 $_POST 上不存在“product_price”。

为避免此错误,请先使用isset()检查它是否存在:

$product_price = isset($_POST['product_price']) ? $_POST['product_price'] : '';

【讨论】:

  • 我把你的行放在我的代码中,但现在数据甚至没有进入数据库。页面刷新
猜你喜欢
  • 1970-01-01
  • 2011-01-29
  • 2020-04-30
  • 1970-01-01
  • 2012-04-20
  • 2021-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多