如何使用mysqli在表中的特定字段中插入多个值?

时间:2015-06-24 02:43:56

标签: php mysql mysqli database-normalization multivalue

我正在开发一个项目,我有一个这样的场景: 我的桌子上有很多字段:

table_name : transaction_tbl
-id
-name
-description
-ref_number : text(datatype)

我的插入是我的代码:

    $sql = "INSERT INTO transaction_tbl (`name`,`description`,`ref_number`) VALUES ('$name','$desccription',$ref_number)";

if ($conn->query($sql) === false){
                    trigger_error('Wrong SQL: ' . $sql . 'Error: ' . $conn->error , E_USER_ERROR);
                }else {
                    echo "Successful ! Data is inserted in database ^__^" ;

                }

由于名称本身是ref_number或参考号,所以有一段时间我会有很多参考号,如果它有多个值,怎么能让它插入? 谢谢:))

更新:

我想要这样的事情:

name    description            ref_number
bag     to be use               10359435846 
                               05438547656
                               035848576

2 个答案:

答案 0 :(得分:1)

在一个单元格中拥有多个值并不是一个好习惯(除非有严重的原因,否则你永远不应该这样做)。它违反了基本的数据库规则。只需将其拆分为两个表并指定外键即可将它们链接起来。

了解数据库规范化。有很多例子。在这里,您需要将未规范化(0NF)表至少提升到第一个标准化级别(1NF)。但建议将其标准化至少达到第3级

google for db规范化教程。根据您的要求,下面的图片会给您一个想法(字段名称与您的问题不同)。

0NF to 1NF

首先将值插入table1(成员表)并在php中使用$iid = mysqli_insert_id()获取插入ID

接下来,将多个值作为单独的行与第一步中获得的主键一起添加到第二个表(数据库表)中。

请记住,这不是教程网站。在网上查找更多信息。

答案 1 :(得分:0)

出于什么目的?为什么不直接使用不同的ref_number插入一个具有相同名称和描述的新行?

但如果您愿意,可以将新的ref_number与现有的..连接。

首先检查它是否已存在 得到它的值,然后连接新的参考号.. 或者如果它不存在,请插入一个新行..

$sql = "SELECT `ref_number` FROM `transaction_tbl`
WHERE `name`='$name' AND `description`='$description'";


$query = mysql_query($sql);
if(mysql_num_rows($query) > 0)
{
    $row = mysql_fetch_array($query);
    $new_ref = $row['ref_number'] . '|' . $ref_number;
    $upd = "UPDATE `transaction_tbl` SET `ref_number`='$new_ref'
            WHERE `name`='$name' AND `description`='$description'";
}
else
{
    $ins = "INSERT INTO transaction_tbl (`name`,`description`,`ref_number`)
            VALUES ('$name','$desccription',$ref_number)";
    mysql_query($ins);
}