Php 会话和mysql_查询不向表中插入数据

Php 会话和mysql_查询不向表中插入数据,php,mysql,session,Php,Mysql,Session,Mysql\u query在下订单时将数据插入orders表,但不会将数据插入order\u detail表 它应该从会话“购物车”获取数据,但似乎失败了 为了简单起见,我删除了一些html代码,只保留了按钮,但这并不重要 <?php require_once('connect_to_db.php'); include("includes/functions.php"); session_start(); if ($_REQUEST['command'] == 'update') {

Mysql\u query在下订单时将数据插入orders表,但不会将数据插入order\u detail表

它应该从会话“购物车”获取数据,但似乎失败了

为了简单起见,我删除了一些html代码,只保留了按钮,但这并不重要

<?php
require_once('connect_to_db.php');
include("includes/functions.php");
session_start();

if ($_REQUEST['command'] == 'update') {
    $customerid = mysql_insert_id();
    $date = date('Y-m-d');
    $result = mysql_query("insert into orders values('', '$date', '$customerid')");
    $orderid = mysql_insert_id();

    $max = count($_SESSION['cart']);
    for ($i=0; $i<$max; $i++) {
        $pid = $_SESSION['cart'][$i]['productid'];
        $q = $_SESSION['cart'][$i]['qty'];
        $price = get_price($pid);
        mysql_query("insert into order_detail values ($orderid,$pid,$q,$price)");
    }
    die('Thank You! your order has been placed!');
}
?>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript">
function validate(){
    var f=document.form1;
    f.command.value='update';
    f.submit();
}
</script>
</head>
<body>
<form name="form1" onsubmit="return validate()">
<input type="hidden" name="command" />
<input type="submit" value="Place Order" />
</form>
</body>
</html>
以下是我如何将数据存储到会话“购物车”中

function addtocart($pid,$q){
        if($pid<1 or $q<1) return;

        if(is_array($_SESSION['cart'])){
            if(product_exists($pid)) return;
            $max=count($_SESSION['cart']);
            $_SESSION['cart'][$max]['productid']=$pid;
            $_SESSION['cart'][$max]['qty']=$q;
        }
        else{
            $_SESSION['cart']=array();
            $_SESSION['cart'][0]['productid']=$pid;
            $_SESSION['cart'][0]['qty']=$q;
        }
    }
在HTML中,每个表单都应该有方法GET、POST或action文件,以防您使用相同的文件。在这种情况下,只需将文件名放在那里。 在PHP中,在这种情况下,您不应该使用请求,而应该使用post或get,因为请求同时处理这两种情况,所以post或get的使用可能会快一点。 您可以在不使用javascript的情况下优化html文件,此javascript不是必需的。 您应该避免使用mysql\u查询,而是使用PDO数据对象。 我想orderid和productid是相同的,您应该只使用一个。 您应该添加到第二个查询中。 您应该将表中的列命名为:INSERT INTO table_name column1、column2、column3,。。。值value1、value2、value3,…,检查添加的值是否超出mysqlDb中的表所能处理的范围。 尝试下面的代码,它可能会更好,但设置文件名并设置列名。那里

<?php
require_once('connect_to_db.php');
include("includes/functions.php");
session_start();

if (isset($_POST['update'])) {
    $customerid = mysql_insert_id();
    $date = date('Y-m-d');
    $result = mysql_query("INSERT INTO orders (column1,column2,column3) VALUES('', '$date','$customerid')");
    $orderid = mysql_insert_id();

    $max = count($_SESSION['cart']);
    for ($i=0; $i<$max; $i++) {
        $pid = $_SESSION['cart'][$i]['productid'];
        $q = $_SESSION['cart'][$i]['qty'];
        $price = get_price($pid);
        mysql_query("INSERT INTO order_detail (column1,column2,column3,column4) VALUES('$orderid','$pid','$q','$price')");
    }
    die('Thank You! your order has been placed!');
}
?>

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 </head>
 <body>
  <form name="form1" method="POST" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
   <input type="submit" name="update" value="Place Order" />
  </form>
 </body>
</html>
在HTML中,每个表单都应该有方法GET、POST或action文件,以防您使用相同的文件。在这种情况下,只需将文件名放在那里。 在PHP中,在这种情况下,您不应该使用请求,而应该使用post或get,因为请求同时处理这两种情况,所以post或get的使用可能会快一点。 您可以在不使用javascript的情况下优化html文件,此javascript不是必需的。 您应该避免使用mysql\u查询,而是使用PDO数据对象。 我想orderid和productid是相同的,您应该只使用一个。 您应该添加到第二个查询中。 您应该将表中的列命名为:INSERT INTO table_name column1、column2、column3,。。。值value1、value2、value3,…,检查添加的值是否超出mysqlDb中的表所能处理的范围。 尝试下面的代码,它可能会更好,但设置文件名并设置列名。那里

<?php
require_once('connect_to_db.php');
include("includes/functions.php");
session_start();

if (isset($_POST['update'])) {
    $customerid = mysql_insert_id();
    $date = date('Y-m-d');
    $result = mysql_query("INSERT INTO orders (column1,column2,column3) VALUES('', '$date','$customerid')");
    $orderid = mysql_insert_id();

    $max = count($_SESSION['cart']);
    for ($i=0; $i<$max; $i++) {
        $pid = $_SESSION['cart'][$i]['productid'];
        $q = $_SESSION['cart'][$i]['qty'];
        $price = get_price($pid);
        mysql_query("INSERT INTO order_detail (column1,column2,column3,column4) VALUES('$orderid','$pid','$q','$price')");
    }
    die('Thank You! your order has been placed!');
}
?>

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 </head>
 <body>
  <form name="form1" method="POST" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
   <input type="submit" name="update" value="Place Order" />
  </form>
 </body>
</html>

会话中的值是否正确存储?脚本中没有错误处理。mysql\u connect、mysql\u select\u db和mysql\u query可能会失败,在这种情况下,它们返回FALSE。在这种情况下,mysql\u错误可以告诉您更多关于实际错误的信息。b您可能需要检查$max的实际值,例如,在您的邮件中打印它。c mysql_*扩展在即将发布的php第7版中被弃用并删除,最好连接到您的mysql服务器。请注意,您正在使用的旧mysql_*扩展在当前版本的php第5.5版中被弃用,并将从下一版本的第7版中删除。您需要迁移到使用mysqli_*extension或PDOI添加了用于将数据存储到会话Niranjan的代码。我的数据库连接工作正常,Volker,$max似乎总是打印值1。在查询中添加引号:在订单中插入详细值“$orderid”、“$pid”、“$q”、“$price”;顺便说一句:你应该考虑控制查询中可能出现的错误:如果!mysql\u查询。。。DIEU错误或类似错误。会话中的值是否正确存储??脚本中没有错误处理。mysql\u connect、mysql\u select\u db和mysql\u query可能会失败,在这种情况下,它们返回FALSE。在这种情况下,mysql\u错误可以告诉您更多关于实际错误的信息。b您可能需要检查$max的实际值,例如,在您的邮件中打印它。c mysql_*扩展在即将发布的php第7版中被弃用并删除,最好连接到您的mysql服务器。请注意,您正在使用的旧mysql_*扩展在当前版本的php第5.5版中被弃用,并将从下一版本的第7版中删除。您需要迁移到使用mysqli_*extension或PDOI添加了用于将数据存储到会话Niranjan的代码。我的数据库连接工作正常,Volker,$max似乎总是打印值1。在查询中添加引号:在订单中插入详细值“$orderid”、“$pid”、“$q”、“$price”;顺便说一句:你应该考虑控制查询中可能出现的错误:如果!mysql\u查询。。。DIEU错误或类似的错误。这并没有改善什么,一些明显的错误仍然存在。例如:两次使用同一个变量。步骤7基本上解决了这个问题,我尝试插入4个值,但表有5列。我从表中删除了一列,现在它正在插入。这并没有改善什么,一些明显的错误仍然存在。例如:两次使用同一个变量。步骤7基本上解决了这个问题,我尝试插入4个值,但表中有5列。我从表中删除了一列,现在它正在插入。