php - 如何解决与使用 php 将条目插入 mysql 相关的问题?

标签 php mysql database insert

我有两个页面,product.php 和 viewcart.php。当用户单击 product.php 上的按钮时,它会将产品添加到后端(连同它的属性)并转到 viewcart.php。数据通过下面的代码提交到 viewcart.php。除了来自 product.php 文本框的值之外,还有一些 php 变量需要传递(下面的变量是“val”)。

<script language="javascript">
          function test()
{
    var val=document.getElementById("textarea").value;  
    var hrf="viewcart.php?retailer=<?php echo $retailer?>&link=<?php echo $link; ?>&price=<?php echo $price; ?>&title=<?php echo $title; ?>&options="+val;
        document.getElementById("a_link").href=hrf;
}
</script>
<a href ="#" id="a_link" onclick="test();" class="btn btn-success" type="submit"><i class="icon-shopping-cart icon-white"></i>  Add to Cart</a>

在 viewcart.php 上,产品被添加到后端,然后通过以下代码显示:

@$link = $_GET['link'];
$price = $_GET['price'];
$title = $_GET['title'];
$retailer = $_GET['retailer'];
$options = $_GET['options'];
$session = session_id();
$_SESSION['sess_var'] = $session;

//connect to database code here
mysql_query("INSERT INTO sessionid (sessionid, link, retailer, price, title, qt, options) VALUES('$session' , '$link', '$retailer', '$price', '$title', 1, '$options') ");

我遇到的问题是当用户刷新 viewcart.php 时;由于上面的代码,产品被再次添加。我如何确保仅当用户单击 product.php 上的提交按钮(而不是通过刷新 viewcart.php 或单击“后退”按钮以转到 viewcart.php)时才将产品添加到数据库中?

最佳答案

从技术上讲,如果您使用相同的 POST 数据刷新页面,据我所知,您将拥有相同的引荐来源网址,因此您不应尝试检查引荐来源网址是否为 product.php。

您应该做的是使用更新/插入 MySQL 查询。首先确保您还在查询中插入主键(这样当页面刷新时,它将是相同的键),然后使用类似于:

INSERT INTO sessionid (id,a,b,c) VALUES (0,1,2,3)
  ON DUPLICATE KEY UPDATE id=id;

最后,不要忘记清理您的输入。

关于php - 如何解决与使用 php 将条目插入 mysql 相关的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9554253/

相关文章:

mysql - 在 mySQL 中使用 WHERE 子句获取不正确的排名

database - 如何在 VB.Net 中使用数据库查询创建 Excel 文件?

php - 如何编写条件来检查不在 codeigniter 数据库表中的 csv 文件数据?

php - PHP 的工作流引擎?

php - php tidy 的替代品?

php - 对于此类数据,最佳的数据库设计是什么

sql-server - 如何在不需要安装 SQL Server 的 Visual Studio 2013 上创建 LocalDB

php - 如何让 Amazon s3 PHP SDK 工作?

php - 将变量中存储的值与 php 中的 mysql 字段值进行比较

mysql - 在 WHERE 子句中使用 != 时 SELECT 不起作用(使用 GROUP BY 和 HAVING COUNT)