【问题标题】:Insert Array values insert to single ID into mysql database using php and PDO [duplicate]使用php和PDO将数组值插入单个ID插入mysql数据库[重复]
【发布时间】:2017-02-10 11:41:56
【问题描述】:

使用 Ajax 加载的数组插入将多个产品插入单个 id。也许使用 Explode 但需要明确说明这种类型的输出:

所有产品(问题)都将输入到一个 id 中。这些问题列表是由 Ajax 添加的。

<?php
if(isset($_POST['Submit'])){
    try {
    $serviceTitle = $_POST['serviceTitle'];
    $price = $_POST['price'];
    $quantity = $_POST['quantity'];
    $amount = $_POST['amount'];

    $date = date('Y-m-d');
    date_default_timezone_set('Asia/Dacca'); 
    $time = date('h:i:s');
    $createBy = $_SESSION['sess_username'];

    $_SESSION['orderNo'] = $_POST['orderNo'];
    $_SESSION['customerNo'] = $_POST['customerNo'];

    if($_POST['Submit']==='Submit'){
        for($i=0;$i<count($serviceTitle);$i++){
            $statement = $db->prepare("INSERT INTO invoice (orderNo,customerNo,productName,price,quantity,amount,createDate,createTime,createBy) VALUES (?,?,?,?,?,?,?,?,?)");
            $statement->execute(array($_POST['orderNo'],$_POST['customerNo'],$serviceTitle[$i],$price[$i],$quantity[$i],$amount[$i],$date,$time,$createBy));
        }
    }
    header("location: order_confirm_tech_step2.php");
    }
    catch(Exception $e) {
            $error_message = $e->getMessage();
    }
}
?>

它将插入相同的 orderNo 和 customerNo 但我想插入这样的数据行: 提前致谢。

【问题讨论】:

  • 与问题完全无关,但我想指出,“数量”的普遍接受的速记版本应该是“数量”,而不是“Qnt”

标签: php mysql arrays ajax


【解决方案1】:

您好,我认为最好的方法是为所有输入提供不同的名称,例如 'new_screen_price' 'old_screen_price'

如果你的表单是由 js 生成的,如果不是直接放在你拥有的 html 中,你可以这样做

<input name='new_screen_price'>
<input name='new_screen_qty'>
...

在你在 php 中取单个值之后

$newScreen = [];
$newScreen['name'] = 'new screen';
$newScreen['price'] = $_POST['new_screen_price'];

把你的阵列产品放在一个

$products = [];
$products['newScreen'] = $newScreen;

你准备好了,我只需要两个参数价格和名称,但显然你需要所有

foreach($products as $prod){
   $statement = $db->prepare("INSERT INTO invoice (orderNo,customerNo,productName,price,quantity,amount,createDate,createTime,createBy) VALUES (?,?,:name,:price,...)");
   $statement->bindParam(':name', $prod->name);
   $statement->bindParam(':price', $prod->price);
   $statement->execute();
}

美好的一天,我希望这可以帮助你

【讨论】:

  • 那么,如何声明“orderNo,customerNo,createDate,createTime,createBy”的值?
猜你喜欢
  • 1970-01-01
  • 2016-06-03
  • 2018-08-01
  • 1970-01-01
  • 2015-10-24
  • 2017-10-20
  • 2016-05-28
  • 2017-07-03
  • 2016-05-26
相关资源
最近更新 更多