【发布时间】:2017-09-19 12:14:31
【问题描述】:
我正在开发一个基于 PHP、Bootstrap 和 MySQLi 构建的示例电子商务网站
我面临 2 个 PHP 页面的问题:home.php 和 cart-script.php
对于带有文本输入和按钮的表单,home.php 的一些相关部分是: `
<div class="panel panel-default">
<div class="panel-heading">
<div class="panel-title">
<?php TitleQuery(2); ?>
</div>
</div>
<div class="panel-body">
<center>
<?php
PhotoQuery(2);
?>
</center>
<p>
<?php
BodyQuery(2);
?>
</p>
<form action="cart-script.php" method="POST">
<p>
<center>
<input type="number" class="form-control" name="name2" placeholder="Select quantity to add:">
</input>
</center>
</p>
<input type="button" name="submit2" class="btn btn-primary btn-block" value="Add to cart">
</input>
</form>
</div>
`
我的 cart-script.php 文件代码是: `
session_start();
require_once("connection.php");
if(isset($_POST['submit2']))
{
$n=int($_POST['name2']);
$id=2;
$query1= "SELECT ItemName,Price FROM items WHERE ItemID='2'";
$result1=mysqli_query($con,$iquery1);
while($row=mysqli_fetch_array($result))
{
$iname=$row["ItemName"];
$p=$row["Price"];
}
$query = "INSERT INTO shopcart VALUES
(
'{$id}',
'{$iname}',
'{$p}',
'{$n}'
)";
$result=mysqli_query($con,$query);
}
?>`
每当我单击 home.php 中的“添加到购物车”按钮,然后在 WampServer 上的 PHPMyAdmin 上检查数据库时,数据库并没有全部受到影响。 我哪里错了?
【问题讨论】:
-
您已经在使用支持 prepared statements 的 API 和有界变量输入,您应该使用带占位符的参数化查询(prepared statements)来保护您的数据库免受SQL-injection !开始使用
mysqli::prepare()和mysqli_stmt::bind_param()。 -
使用
mysqli_error()让 MySQL 告诉你问题所在 -
@Qirel 我试过mysqli_error()函数,但数据库仍然不受影响
-
一些简单的调试通常会有所帮助。 将一些输出放入您的 cart-script.php 文件中,打开您的开发工具 (F12) 并查看它说。在 PHP 中打开错误报告。
-
while($row=mysqli_fetch_array($result))失败了,错误报告会告诉你未定义的变量。