我正在尝试将数据添加到我的数据库,但它无法正常工作,并且没有显示错误消息。
order.php:
<?php
$con=mysqli_connect("localhost","root","","jutta");
//if form is submitted
if(isset($_POST['submit'])) {
$size=$_POST['shoe_sizes'];
$qan=$_POST['quantity'];
$details=$_POST['shipping_address'];
$contact=$_POST['contact'];
$date=date('Y-m-d');
$sql="INSERT INTO orders(size, qan, address, contact, date) VALUES ($size, '$qan', '$address', '$contact', '$date')";
$query=mysqli_query($con, $sql) or die('Query could not be connected.');
if($query) {
echo "success";
}
else {
echo "fail.";
}
}
?>
我的表单:
<form action='order.php' method='post'>
<br>
<a href='admin/product_images/$pro_image' title='$pro_title' class='MagicZoom'>
<img src='admin/product_images/$pro_image' width='200' height='150' class='img-responsive'/></a><br>
Name: <font style='color:#2E9AFE; text-align: center;'><b>$pro_title </b></font>
<p><label>Price:</label> <font style='color:black; text-align: center;'><b> Rs. $pro_price </b></font></p>
<div class='row'>
<div class='col-sm-6'>
<b><label>Select Size:</label> </b><select name='shoe_sizes'>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
</select>
</div>
<div class='col-sm-6'>
<b><label>Quantity:</label> </b><select name='quantity'>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select></div>
</div><hr>
<b style='color: grey;'><label>Shipping Address: <br></b><textarea name='shipping_address' cols='25' rows='3' required /></textarea><br>
<b><label>Contact No. :</label></b> <input name='contact' type='tel' id='phone' placeholder='Your Contact Number'>
<hr>
<button type='submit' name='submit' class='btn btn-primary'><a href='order.php' style='color:white; text-decoration:none;'>Order Now</a></button>
</form>
它将我重定向到order.php
文件而不将数据插入数据库,甚至没有任何消息只是一个空白页。
答案 0 :(得分:0)
像这样使用:
$sql="INSERT INTO orders(size, qan, address, contact, date) VALUES ('".$size."', '".$qan."', '".$details."', '".$contact."', '".$date."')";
答案 1 :(得分:0)
在insert语句中,您在size变量上缺少单引号,因为它是作为字符串发布的。
$sql="INSERT INTO orders(size, qan, address, contact, date) VALUES ('$size', '$qan', '$address', '$contact', '$date')";
您还使用保留关键字日期作为订单表中的一个字段名称
答案 2 :(得分:0)
您已检索到变量:
$details=$_POST['shipping_address'];
然后将其更改为 $details
,而不是 $address
:
$sql="INSERT INTO orders(size, qan, address, contact, date) VALUES ($size, '$qan', '**$address**', '$contact', '$date')";
答案 3 :(得分:0)
首先,永远不要相信用户的输入。它可能使您的数据库易受攻击。始终通过mysqli_real_escape_string()转义用户的输入。您不希望数据库对黑客的攻击开放。
其次,当试图找出错误时,有几种方法可以解决这个问题。 echo
您的查询,或者如果您认为查询中存在错误,您可以杀死您的脚本!这在调试代码和可能的问题时非常有效。例如,您可以使用mysqli_error():
if (!$query) {
die(mysql_error($con)); //Kills your script and shows you the error
}
这对我来说非常有效,可以修复您的代码和数据库问题。
我看到的另一个重大错误是你插入的变量。您通过取消设置变量将空/空字符串插入数据库。为了明白我的意思,你应该echo $query
。这将显示您的整个查询。
答案 4 :(得分:0)
您正在为变量$_POST['shipping_address']
分配$details
,但您正在将变量$address
插入数据库。这会导致查询失败。
将$details
更改为$address
,您就可以了。
答案 5 :(得分:0)
$dsn = 'mysql:dbname=stackdb;host=127.0.0.1'; // give your dbname instead of stackdb and host. If running on localhost,leave it as 127.0.0.1
$user = 'root'; //Give your username to access db.
$password = '*****'; // Replace **** instead of password. If you dont have password, delete only the stars not the quotes.
$dbh = new PDO($dsn, $user, $password);
$sql = "INSERT INTO stackdba (shoeSize,quantity,shippingAddress,contact) VALUES(?,?,?,?)"; //stackdba is the table name
$insert = $dbh ->prepare($sql);
$insert->execute(array($_POST['shoe_sizes'],$_POST['quantity'],$_POST['shipping_address'],$_POST['contact']));
如果您的数据未插入,那么如果您看到空白页面,则表示您在某处出现语法错误。
尝试
error_reporting('E_ALL');
在你的php文件的第1行。
答案 6 :(得分:0)
首先删除放在
之间的锚标记<button type='submit' name='submit' class='btn btn-primary'>
<a href='order.php' style='color:white; text-decoration:none;'>Order Now</a></button>
当您已经将表单操作定义为order.php时,则不需要创建锚标记。目前,当您单击该按钮时,由于锚定标签,表单将被重定向到order.php,而不会发布任何数据,这就是为什么空白页面将显示在屏幕上的原因。它看起来像:
<button type='submit' name='submit' class='btn btn-primary'>Order Now</a></button>
<br />
要进一步处理错误,请打开错误报告。