将数组添加到Mysql中的最佳方法是什么

时间:2011-04-16 22:50:47

标签: php mysql

我正在制作一个包含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);
  }

3 个答案:

答案 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)

是的,规范化是你可能缺少的。完成后,将数据库中的函数添加到处理规范化表的插入中。 这样,数据的逻辑就与数据保持一致。