我创建了一个表单,供用户添加产品并在每个商店设置价格。
有三个简单的数据库:
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']
));
我的问题是:
提前致谢!
答案 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不严格,那么它会截断字符串。 您可能必须将表更改为正确的列类型。