【发布时间】:2020-12-17 12:02:04
【问题描述】:
我一直在尝试创建一个付款页面,在该页面添加足够的信息后,订单将与购物车中的商品一起下单。出于某种原因,我的代码没有响应并显示空白屏幕。我对 PHP 比较陌生。谁能帮帮我?下面是代码:-
<?php
require_once('../connection.php');
require_once('../product.php');
session_start();
$name = $_POST['name'];
$email = $_POST['email'];
$address = $_POST['address'];
if(isset($_POST['payment-made'])){
if(empty($name) || empty($email) || empty($address)){
echo "<script>alert('Please enter the complete information!');
window.location = 'orders.inc.php';</script>";
} else {
if(isset($_SESSION['Uid'])){
if(isset($_SESSION['cart'])){
$product_id = array_column($_SESSION['cart'], 'product_id');
$result = mysqli_query($conn,"SELECT * FROM `products`");
while($row = mysqli_fetch_assoc($result)){
foreach($product_id as $id){
if($row['product_id']==$id){
$ordername = $row['item_name'];
$nooforder = 1;
$sql1 = "INSERT INTO orders(order_name, no_order, cust_name, del_add)
VALUES ('$ordername', '$nooforder', '$name', '$email', '$address');";
$done = mysqli_query($conn, $sql1);
if($done){
echo "successful";
}
else{
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
}
}
}
}
}
}
}
}
?>
我怀疑问题出在 $ordername 变量中。谁能澄清导致问题的原因以及如何解决?
【问题讨论】:
-
警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。 Escaping is not enough!
-
如果您的
payment-made表单变量未设置,则会导致空白屏幕,因为您不会回显任何错误。同样,如果您的 INSERT 查询不起作用,您不会显示任何消息说它失败。我相信设置PHP错误报告之后错误不会报告它们。
标签: php mysql sql database mysqli