我正在制作一个包含5个产品的简单订单,可以从用户中选择一个复选框,然后我想将访问者选择的产品添加到mysql数据库中,但正如您所知,例如INSERT数组[做最好的工作!
我使用php进行了FOR stamtment,但它只添加了数组的最后一个产品!
我知道序列化和反序列化php函数的方法,但我真的不喜欢它!
感谢您的帮助。
以下是代码:
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$products = $_POST['products'];
$email = $_POST['email'];
echo '<h3>Sehr geehrte/er '.$firstname.' '.$lastname.'</h3>';
if(empty($products))
{
echo("Keine bestellung.");
}
else
{
$N = count($products);
echo("Sie haben $N produkte bestellt:<br /> ");
for($i=0; $i < $N; $i++)
{
echo $order = ($products[$i]);
}
$query = "INSERT INTO salt_orders (products, vorname, nachname, date)
VALUES ( '$order', '$firstname', '$lastname', NOW())";
$result = mysql_query($query);
}
答案 0 :(得分:1)
创建一个单独的表格,引用您的产品及其详细信息。然后创建另一个表来保存订单行项目。
当客户下订单时,在订单项表中插入一个新行,引用他们购买的产品及其适用的订单号。在salt_orders中创建一个包含订单号的记录。
然后,您可以将它们连接在一起以检索完整的订单详细信息。
连续向一个单元格添加多个产品会让你很难,所以我建议如上所述规范化你的数据。
这只是一个简单的例子,它可能会更加复杂,具体取决于您需要它做什么。
答案 1 :(得分:1)
您可以使用它在一个字段中连接产品:
$order = "";
for($i=0; $i < $N; $i++)
{
echo $order .= $products[$i] . "," ;
}
$order = substr($order ,0 ,strlen($order )-1 ) ;
但您应该像其他人所建议的那样,真正考虑您的订单表的规范化。
答案 2 :(得分:1)
是的,规范化是你可能缺少的。完成后,将数据库中的函数添加到处理规范化表的插入中。 这样,数据的逻辑就与数据保持一致。