Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果我订购两种产品,它只会在我的数据库中保存一种产品_Php_Mysql_Database - Fatal编程技术网

Php 如果我订购两种产品,它只会在我的数据库中保存一种产品

Php 如果我订购两种产品,它只会在我的数据库中保存一种产品,php,mysql,database,Php,Mysql,Database,当我点击checkout时,它会向我发送一封包含订单的电子邮件,并将我订购的产品发送到mysql数据库。但只有一个(最后一个产品)产品被发送并保存在数据库中。我怎样才能解决这个问题 //connect to database $connection = mysql_connect("localhost","root","") or die ("Can't connect"); mysql_select_db("shoppingcart", $connection) or die ("Can't

当我点击checkout时,它会向我发送一封包含订单的电子邮件,并将我订购的产品发送到mysql数据库。但只有一个(最后一个产品)产品被发送并保存在数据库中。我怎样才能解决这个问题

//connect to database
$connection = mysql_connect("localhost","root","") or die ("Can't connect");
mysql_select_db("shoppingcart", $connection) or die ("Can't connect");

//get order id ONLY to get order id <<<<<<<
$vol = mysql_query("SELECT orderid FROM ordertracking WHERE email='$email'");
while($volume=mysql_fetch_array($vol))
{
 $orderid = $volume['orderid'];
} // end of getting order id from table ordertracking
    // add new order
    $order = "INSERT INTO `order` (orderid, customerid, productid, brand, model, price, amount, totalcost, image) VALUES ('$orderid', '$customerid', '$productid', '$brand' , '$model', '$price', '$amount', '$totalcost', '$image')";
    if (!mysql_query($order,$connection))
        {
            die('Error: ' . mysql_error());
            echo "Sorry, there was an error";
        }
        echo "New order added" . "<br />";

        mysql_close($connection);
//连接到数据库
$connection=mysql_connect(“本地主机”、“根目录”、“根目录”)或die(“无法连接”);
mysql_选择_db(“shoppingcart”,$connection)或死亡(“无法连接”);

//仅获取订单id以获取订单id由于过早关闭while循环,因此您只运行一次查询:

while($volume=mysql_fetch_array($vol))
{
 $orderid = $volume['orderid'];
}
您应该在下线后将其关闭:

 echo "New order added" . "<br />";
echo“新增订单”。“
”;
您在这里所做的是:

  • 从orderTracking表中获取所有订单ID,其中电子邮件是给定的电子邮件。我假设提取了不止一行
代码

while($volume=mysql_fetch_array($vol))
{
 $orderid = $volume['orderid'];
}
很好,但是当您尝试将orderid的值插入[order]表时,只会更新一行,因为变量$orderid现在只包含一个字符串(查询的最后一行的orderid)

因此,解决方案是在while循环中运行insert

像这样的

$vol = mysql_query("SELECT orderid FROM ordertracking WHERE email='$email'");
while($volume=mysql_fetch_array($vol))
{
 $orderid = $volume['orderid'];
// add new order
    $order = "INSERT INTO `order` (orderid, customerid, productid, brand, model, price, amount, totalcost, image) VALUES ('$orderid', '$customerid', '$productid', '$brand' , '$model', '$price', '$amount', '$totalcost', '$image')";
    if (!mysql_query($order,$connection))
        {
            die('Error: ' . mysql_error());
            echo "Sorry, there was an error";
        }
}
希望你能有个主意

第二种解决方案是,您可以使用数组变量,而不是使用简单变量$orderid。然后循环遍历变量以获取orderid


简而言之,根据您的代码,您需要一个循环来在数据库中插入多条记录。

是的,它现在发送两个订单,但这两个订单都是相同的产品。例如,我订购了product1和product2。它会将product2发送两次到我的数据库。@F4LLCON除非数据不正确,否则这应该有效。尽管如此,我还是会用一个虚拟数据库来尝试这个脚本,然后会回来。代码应该可以很好地处理一些虚拟数据。检查您的数据库值。根据我的说法,Php代码是正确的。不起作用,它仍然在发送最后一个产品,但更多的时间是打印($volume),这样你就可以看到你得到了什么。不多,但实际上
while($volume=mysql\u fetch\u array($vol)){$orderid=$volume['orderid'];}
仅用于从ordertracking中先前添加的orderid中获取orderid。这与在订单中添加订单无关。因此,我从ordertracking表中获取orderid,并将该orderid添加到表order中的
orderid
。我想问题出在其他地方,我将稍微编辑一下我的问题。我的意思是,卷数组中可能有两次相同的数据,问题在于从ordertracking而不是insert中获取数据。我放弃,这个脚本有两个问题,一个是没有将所有产品发送到我的数据库,只有最后一个产品和一个是,电子邮件没有显示所有的数据。只有前4种产品。这就像电子邮件有行限制之类的。我们明天必须在学校展示这一点,我只是放弃了这两个问题。老师必须处理它。谢谢,我将更新您的帖子,但不能将其标记为FinishedHP的
mysql.*
函数已完成。有一些既受支持又受支持。
$vol = mysql_query("SELECT orderid FROM ordertracking WHERE email='$email'");
while($volume=mysql_fetch_array($vol))
{
 $orderid = $volume['orderid'];
// add new order
    $order = "INSERT INTO `order` (orderid, customerid, productid, brand, model, price, amount, totalcost, image) VALUES ('$orderid', '$customerid', '$productid', '$brand' , '$model', '$price', '$amount', '$totalcost', '$image')";
    if (!mysql_query($order,$connection))
        {
            die('Error: ' . mysql_error());
            echo "Sorry, there was an error";
        }
}