在两个表中插入多个内容

时间:2014-11-08 15:51:44

标签: php mysql pdo

我创建了一个表单,供用户添加产品并在每个商店设置价格。

有三个简单的数据库:

Products:
- id
- token
- name

Stores:
- id
- name

Prices:
- id
- product_token
- store_id
- price

我对表单的第一个想法是在表单中创建一个带有Stores数据的foreach循环:

foreach ($stores_result as $row) {
    $store_id = $row->id;
    $store = $row->name;

     <a class="add-store" href="#" data-store="<?php echo $store_id; ?>"><?php echo $loja; ?></a>
}

当用户点击商店链接时,jQuery会向表单添加一个输入,如下所示:

    field = '<input type="text" name="price" class="form-control">';
    $(this).hide().parent().after(field);

当用户提交表单时,我使用PDO将数据存储在数据库中:

    $token = uniqid($_POST['product'], true);

    $stmt = $conn->prepare('INSERT INTO products (token, name) VALUES(:token, :name)');
    $stmt->execute(array(
        ':token' => $token,
        ':nome' => $_POST['product'],
    ));

    $stmt2 = $conn->prepare('INSERT INTO prices(product_token, price) VALUES(:product_token, :price)');
    $stmt2->execute(array(
        ':product_token' => $token,
        ':price' =>$_POST['price']
    ));

我的问题是:

  1. 如何在价格表中插入所选商店的ID?
  2. 为什么price_token在价格表中设为0?
  3. 提前致谢!

1 个答案:

答案 0 :(得分:0)

关于问题#1

第一次查询后检查最后一次插入。 $product_id = $stmt->lastInsertId()然后在价格表中插入$ id。

$token = uniqid($_POST['product'], true);

$stmt = $conn->prepare('INSERT INTO products (token, name) VALUES(:token, :name)');
$stmt->execute(array(
    ':token' => $token,
    ':nome' => $_POST['product'],
));
$product_id = $stmt->lastInsertId();

$stmt2 = $conn->prepare('INSERT INTO prices(product_id, product_token, price) VALUES(:product_id, :product_token, :price)');
$stmt2->execute(array(
    ':product_id' => $product_id,
    ':product_token' => $token,
    ':price' =>$_POST['price']
));

关于上面的说明。你需要你的新列是类型字符串,你可以改变我添加的行如下:

$product_id = $stmt->lastInsertId() . '_'.$_POST['price'] ;

上面的代码将为您提供类似于12_19.99

的内容

关于#2 我认为令牌列是整数类型,令牌是字符串而不是数字。如果你的sql_mode不严格,那么它会截断字符串。 您可能必须将表更改为正确的列类型。