gpt4 book ai didi

php - $_POST 不回应查询

转载 作者:太空宇宙 更新时间:2023-11-03 11:50:45 25 4
gpt4 key购买 nike

该页面基本上是一种用于将新产品添加到数据库中的产品表的表单。该表格还必须包括图片上传。该函数应该在将任何数据插入数据库之前回显查询。但是,每次我按下提交按钮时,它都不会显示查询,并且表单会自行重置。我尝试了不同的解决方案,但它们不起作用。我将表单操作更改为新的 php 页面,但仍然无法正常工作。我也尝试过使用两种不同的浏览器,并尝试显示错误代码。代码中有什么乱七八糟的东西吗?

 <!DOCTYPE>
<?php
include("../includes/db.php");

?>
<html>
<head>
<title>Insert a Product</title>
<script src="//tinymce.cachefly.net/4.3/tinymce.min.js"></script>
<script>tinymce.init({selector:'textarea'});</script>
</head>
<body>

<form name="submit" action="insert_product.php"method="POST"enctype="multipart/from-data">

<table align="center" width="800">


<tr align="center">
<td colspan="8"><h4>Insert New Post Here</h4></td>
</tr>


<tr>
<td align="right"><b>Product Title:</b></td>
<td><input type="text" name="pro_name" /></td>
</tr>



<tr>
<td align="right"><b>Product Price:</b></td>
<td><input type="text" name="price"/></td>
</tr>

<tr>

<td align="right"><b>Product Image:</b></td>
<td><input type="FILE" name="product_image" id="product_image"/></td>
</tr>

<tr>
<td align="right"><b>Product Color:</b></td>
<td><input type="text" name="Color"/></td>
</tr>

<tr>
<td align="right"><b>Product Location:</b></td>
<td>
<select name="location">
<option>Select a Location</option>
<?php

$get_location = "select * from location";

$run_location = mysqli_query($conn, $get_location);

while ($row_location=mysqli_fetch_array($run_location)){
$Loc_name = $row_location['Loc_name'];
$location_id = $row_location['location_id'];
echo "<option value='$location_id'>$Loc_name</option>";

}
?>

</select>
</td>
</tr>

<tr>
<td align="right"><b>Product Supplier:</b></td>
<td><input type="text" name="pro_supplier"/></td>
</tr>

<tr>
<td align="right"><b>Product Cost:</b></td>
<td><input type="text" name="cost"/></td>
</tr>

<tr>
<td align="right"><b>Product Keywords:</b></td>
<td><input type="text" name="pro_keywords"/></td>
</tr>
<tr>
<td align="right"><b>Product Description:</b></td>
<td><textarea name="Pro_desc" cols="20" rows="10"/></textarea></td>
</tr>




<tr align="center">

<td colspan="7"><input type="submit" name="submit" value="Insert Product Now"/></td>
</tr>

</form>


</body>





</html>

<?php






if (isset($_POST['submit']) && isset($_FILES['product_image'])){


$pro_name = $_POST['pro_name'];
$price = $_POST['price'];
$Color = $_POST['Color'];
$cost = $_POST['cost'];
$pro_desc = $_POST['pro_desc'];
$pro_keywords = $_POST['pro_keywords'];

$product_image = $_FILES['product_image']['name'];
$product_imgtmp = addslashes (file_get_contents($_FILES['product_image']['tmp_name']));



echo $insert_product =
"insert into products
(pro_name, price, Color, cost, Pro_desc, pro_keywords, product_image)
VALUES
('$pro_name','$price','$Color','$cost','$pro_desc','$pro_keywords','$product_image')";


if ($conn->query($insert_product) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $insert_product . "<br>" . $conn->error;
}

}



?>

最佳答案

编辑:再次检查代码并使用更更细的齿梳后,发现了更多错误。请参阅下面我的编辑:

首先,你有没有打错字,是from而不是 form :

enctype="multipart/from-data"
^^^^

应该读作:

enctype="multipart/form-data"
^^^^

然后是你的<form name="submit">并提交按钮 <input type="submit" name="submit"两者都具有相同的名称属性 submit .

  • 删除 name="submit"来自 <form>这是一个冲突。

添加了一个 else{ echo "Something went wrong..."; }你的条件语句从一开始就会落入其中。

错误报告也能帮到您。

现在,不管里面是什么db.php我们不知道。由于您正在使用 MySQLi API 进行查询,因此它的连接必须是同一个,mysqli_而不是 mysql_或 PDO,如果是这样的话。

  • 不同的 MySQL API 不会混用。

"However, every time I press on the submit button it doesn't show the query"

你的条件语句:

if (isset($_POST['submit']) 
&& isset($_FILES['product_image']))

正在检查是否同时按下了提交 AND-&&文件已设置。

您可能想要使用 || (或)在这里,如果该文件曾经“未设置/为空”。

对于用户提供的输入,使用条件 !empty() , 更好。

  • 因此,请确保满足这两个条件。

可以改成:

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

// do something in here

if( !empty($_FILES['product_image']) ){

// do something else in here
}
else{
// you can do stuff here too for an empty file condition
}

}

HTML 标签:

<!DOCTYPE>不是正确的文档类型声明,应读作 <!DOCTYPE html>作为 HTML5 支持的最低方法。

否则,请参阅以下所有有效类型:


脚注:

您当前的代码是对 SQL injection 开放的.使用 mysqli_* with prepared statements , 或 PDOprepared statements .


编辑:

进一步查看您的代码:

<textarea name="Pro_desc"$_POST['pro_desc'] .注意大写 P在名称属性中?

那些 POST 数组区分大小写;错误报告会让您对此有所了解,即 undefined index pro_desc .

它应该读作:

  • $_POST['Pro_desc']

专业提示:在整个代码中使用相同的字母大小写约定。您很快就会迷失在使用混合大小写变量中,而且它们区分大小写。我的偏好一直是对变量、数组等使用全小写字母。

  • 对此要小心。

另外,如果您试图将上传的文件作为二进制文件插入数据库,则需要使用 mysqli_real_escape_string() 转义该数据。并将您的列设置为 BLOB 或 LONGBLOB,具体取决于文件的大小。

还要确保没有文件上传约束大小限制。

引用资料:


添加error reporting到您的文件的顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:显示错误只应在试运行中进行,绝不能在生产中进行。

关于php - $_POST 不回应查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35658097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com