繁体   English   中英

在PHP中结合多个SQL查询

[英]Combine multiple sql queries in php

因此,我为一个朋友提供了一项慈善活动的售票系统。 用户可以在此页面上选择所需的门票数量,然后单击“注册”。 没有付款,他们只需要注册票即可。 票证有两种:普通票和贵宾票。

我创建了三个数据库:customers,ticket和customer_tickets。 以下是这些表的转储。

顾客:

CREATE TABLE `customers` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `surname` varchar(2056) NOT NULL,
  `lastname` varchar(2056) NOT NULL,
  `email` varchar(2056) NOT NULL,
  `street` varchar(2056) NOT NULL,
  `house` int(255) NOT NULL,
  `postal` varchar(2056) NOT NULL,
  `city` varchar(2056) NOT NULL,
  `desired_vip_tickets` int(1) NOT NULL DEFAULT '0',
  `desired_normal_tickets` int(1) NOT NULL DEFAULT '0',
  `order_id` varchar(2056) NOT NULL,
  `status` varchar(2056) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=36 ;

客户门票:

CREATE TABLE `customer_tickets` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `order_id` int(255) NOT NULL,
  `ticket_id` int(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

门票:

CREATE TABLE `tickets` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `ticket_id` varchar(2056) NOT NULL,
  `ticket_type` int(255) NOT NULL,
  `bought` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

用户单击注册时,将执行以下代码。 但是,仅执行第一个查询,而没有其他查询。 另外,我担心所有这些查询是否会使服务器受苦...

$sql = "UPDATE customers SET `status`='$status' WHERE `order_id`='$order_id'";
$qry = mysql_query($sql) or die (mysql_error());

$sql = "SELECT `desired_vip_tickets`, `desired_normal_tickets` FROM customers WHERE `order_id`='$order_id'";
$qry = mysql_query($sql) or die (mysql_error());
$array = mysql_fetch_array($qry);

$vip = $array[0];
$normal = $array[1];

$sql = "SELECT `ticket_id` FROM tickets WHERE `ticket_type`='1' AND `bought`='0' LIMIT ".$vip;
$qry = mysql_query($sql) or die (mysql_error());

while ($row = mysql_fetch_assoc($qry)) {
    $ticket_id = $row['ticket_id'];

    $ins = "INSERT INTO customer_tickets (`order_id`, `ticket_id`) VALUES ('$order_id', '$ticket_id)";
    $query = mysql_query($ins) or die (mysql_error());

    $upd = "UPDATE tickets SET `bought`='1' WHERE `ticket_id`='$ticket_id";
    $query = mysql_query($upd) or die (mysql_error());
}

$sql = "SELECT ticket_id FROM tickets WHERE `ticket_type`='0' AND `bought`='0' LIMIT ".$normal;
$qry = mysql_query($sql) or die (mysql_error());

while ($row = mysql_fetch_assoc($qry)) {
    $ticket_id = $row['ticket_id'];

    $ins = "INSERT INTO customer_tickets (`order_id`, `ticket_id`) VALUES ('$order_id', '$ticket_id)";
    $query = mysql_query($ins) or die (mysql_error());

    $upd = "UPDATE tickets SET `bought`='1' WHERE `ticket_id`='$ticket_id";
    $query = mysql_query($upd) or die (mysql_error());
}

您将需要SQL连接不同的表。 您的sql必须看起来像这样:

SELECT * FROM table1.customer_name, table2.amount_spent, recentpurchases
WHERE table2.amount_spent = recentpurchases.spendamount

我已经为这个分析器使用了示例表。 它们是表1,表2和最近购买的商品。 抱歉,如果这不是有用的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM