Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.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_Ajax_Codeigniter - Fatal编程技术网

Php 如何发出多个请求

Php 如何发出多个请求,php,mysql,ajax,codeigniter,Php,Mysql,Ajax,Codeigniter,用户想要购买30件物品,除了进行for循环还有其他方法吗 如何制作30个插页 public function buy($item_id) { $price = $this->input->post('price'); $amount = $this->input->post('amount'); $sum = $this->input->post('sum'); $price = intval($price); $amo

用户想要购买30件物品,除了进行for循环还有其他方法吗

如何制作30个插页

public function buy($item_id)
{
    $price = $this->input->post('price');
    $amount = $this->input->post('amount');
    $sum = $this->input->post('sum');
    $price = intval($price);
    $amount = intval($amount);
    $sum = intval($sum);

    if(!is_numeric($price) || !is_numeric($amount) || !is_numeric($sum))
    {
        exit("Неверные значения");
        return false;
    }

    if(!empty($_SESSION['id']))
    {
        $user_id = $_SESSION['id'];
    }
    else
    {
        echo 'not logged';
        exit();
    }
    $q = $this->db->query("SELECT * FROM users WHERE id = ".$user_id);
    $t = $this->db->query("SELECT * FROM items WHERE id = ".$item_id." AND 
    TO_DAYS(end) - TO_DAYS(now()) >= 0");
    if($this->db->affected_rows() != 0)
    {
        $user = $q->result_array();
        $item = $t->result_array();
        $active = $user[0]['active'];
        $user_id = $user[0]['id'];
        $money = $user[0]['money'];
        $price = $item[0]['price'];
        $bought_times = $item[0]['bought_times'];
        $coupons = $item[0]['coupons'];
        $discount = $item[0]['discount'];
        $short_desc = $item[0]['short_desc'];
        $status = "";

        //echo $coupons;
        //exit();
        for($i = 0; $i < $amount; $i++)
        {
            if($coupons <= 0 || ($amount > $coupons))
            {
                $status = 'out of coupons';
                break;

            }
            if($money >= $price)
            {
                $money = $money - $price;
                $this->db->query("INSERT INTO user_items (`discount`, `short_desc`, `user_id`) 
                VALUES(".$discount.", '".$short_desc."', ".$user_id.")");
                $this->db->query("UPDATE users SET money = ".$money." WHERE id = ".$user_id);
                $coupons -= 1;
                $this->db->query("UPDATE items SET coupons = ".$coupons." WHERE id = ".$item_id);
                $q = $this->db->query("SELECT * FROM users WHERE id = ".$user_id);
                $user = $q->result_array();
                $money = $user[0]['money'];
                $_SESSION['money'] = $money;
                $status = 'buy successfull';
                //redirect('');
            }
            else
            {
                //
                $status = 'not enough money';
                break;

            }

        }
        switch($status)
        {
            case 'out of coupons':
            echo 'out of coupons';
            break;

            case 'buy successfull':
            $bought_times += 1;
            $this->db->query("UPDATE items SET bought_times = ".$bought_times." WHERE id = ".$item_id);
            echo 'buy successfull';
            break;

            case 'not enough money':
            echo 'not enough money';
            break;
        }
        /*foreach($q->result_array() as $u);
        {
            $_SESSION['id'] = $u[0]->id;
            $_SESSION['email'] = $u[0]->email;
            redirect('');

        }*/
        //return 'trolol';
    }
    else
    {
        echo 'out of time';
    }
    //echo $user_id;
}
公共功能购买($item\u id)
{
$price=$this->input->post('price');
$amount=$this->input->post('amount');
$sum=$this->input->post('sum');
$price=intval($price);
$amount=intval($amount);
$sum=intval($sum);
如果(!is_numeric($price)| |!is_numeric($amount)| |!is_numeric($sum))
{
出口(“出口”);
返回false;
}
if(!empty($\u会话['id']))
{
$user\u id=$\u会话['id'];
}
其他的
{
回声“未记录”;
退出();
}
$q=$this->db->query(“从用户中选择*,其中id=”.$user\u id);
$t=$this->db->query(“从id=“.$item\u id.”的项目中选择*”,以及
到天(结束)-到天(现在())>=0“;
如果($this->db->infected_rows()!=0)
{
$user=$q->result_array();
$item=$t->result_array();
$active=$user[0]['active'];
$user_id=$user[0]['id'];
$money=$user[0]['money'];
$price=$item[0]['price'];
$bunded_times=$item[0]['bunded_times';
$coups=$item[0]['coups'];
$discount=$item[0]['discount'];
$short_desc=$item[0]['short_desc'];
$status=“”;
//echo美元优惠券;
//退出();
对于($i=0;$i<$amount;$i++)
{
如有($优惠券$优惠券))
{
$status=‘优惠券售完’;
打破
}
如果($money>=$price)
{
$money=$money-$price;
$this->db->query(“插入用户项目(`折扣`、`short\u desc`、`user\u id`)
值(“.$折扣。”、“$short\u desc.”、“$user\u id.”);
$this->db->query(“更新用户设置货币=“.$money.”其中id=“.$user\u id”);
$优惠券-=1;
$this->db->query(“更新项目集优惠券=“.$coups.”其中id=“.$item\u id”);
$q=$this->db->query(“从用户中选择*,其中id=”.$user\u id);
$user=$q->result_array();
$money=$user[0]['money'];
$\会话['money']=$money;
$status='buy successfull';
//重定向(“”);
}
其他的
{
//
$status='钱不够';
打破
}
}
交换机($状态)
{
“优惠券不足”案例:
回音“优惠券外”;
打破
案例“购买成功”:
$PUNDED_倍+=1;
$this->db->query(“更新项目集购买次数=“.$bunded\u times.”其中id=“.$item\u id”);
echo“收购成功”;
打破
“钱不够”案例:
回声“钱不够”;
打破
}
/*foreach($q->result\u array()作为$u);
{
$\u会话['id']=$u[0]->id;
$\u会话['email']=$u[0]->电子邮件;
重定向(“”);
}*/
//返回“trolol”;
}
其他的
{
回声“过时”;
}
//echo$user\u id;
}
这是ajax请求的控制器,在我的本地机器上一切正常,但在主机上它给出了一个错误

我需要减去钱,减去优惠券,然后根据用户数量插入行


你能给我一个关于这段代码的建议吗?

让你的查询更具动态性只进行一次查询尝试使用循环进行连接,该循环可能会生成如下查询:

INSERT INTO my_table(column1, column2, column3) VALUES ('VAL1','VAL2', 'VAL3'), ('VAL1','VAL2', 'VAL3'), ('VAL1','VAL2', 'VAL3'), ('VAL1','VAL2', 'VAL3') ...

通过这种方式,您可以只抛出一个查询,但可以在表中插入多个项,只需用逗号(,)分隔每组值即可。

换句话说,我的意思是,如何优化此代码???,我不知道如何使循环正确插入项为什么不使用codeigniter cart类?但如何在循环中实现它?我如何将循环放在这些逗号之间?如果它取决于数量“但如何在循环中实现?”=>使用foreach循环连接sql查询的值部分