如何在mysql的单个字段中插入多个值

时间:2015-01-16 04:23:35

标签: php mysql

我想在一个字段中插入多个值,我不知道如何使用长文本数据类型字段来实现这一点。并且还告诉我如何一次只获取这些值一个单独的值。

7 个答案:

答案 0 :(得分:0)

将多个值存储到单个列中不是一个好主意。如果你真的想那样将你的字符串存储为昏迷分隔。从数据库读回时你可以使用php explode功能。 Php explode

我会给你另一个存储选项

假设你的字符串是str1,str2,str3

首先,如果你使用你的方法,它将如下所示。我认为这不是一个好主意。

enter image description here

我认为以下是好方法

enter image description here

答案 1 :(得分:0)

据我所知,MySQL没有任何可以帮助您使用案例的数据类型。好吧,实际上它有一个“设置”数据类型,但如果我没记错的话,它只允许最多60个成员。

您可以尝试使用BLOB作为列类型并在其中存储序列化数据(即JSON,协议缓冲区)。

但是,我建议您重新评估数据库的设计。你正在打破the first normal form,这表明你做错了什么。

答案 2 :(得分:0)

使用json_encode对内容进行编码,然后将其存储在db字段中,当您检索该值时,请使用json_decode(与wordpress相同)

答案 3 :(得分:0)

在单个字段中插入多个值:

要在单个字段中插入平面编号,请使用implode和以逗号分隔的值。

$r=implode(",",$available);
$insert=mysql_query("insert into flatdetails(available) value ('$r')")

要从数据库使用中检索值,explode将所有值分开..

用于使用检索值 的 $ I =爆炸( “”,$ R);

<?php
$select_tbl=mysql_query("select * from flatdetails",$conn);
while($fetch=mysql_fetch_object($select_tbl))
{
$r=$fetch->available;


$i=explode(",",$r);


echo $i[0]."</br>";
}
?>

答案 4 :(得分:0)

我认为你应该使用PHP的Array和Implode功能。创建一个数组并用逗号进行内部删除。例如---

假设您有三个字段,然后获取这些输入字段的值并创建一个数组。

$arr = array(); // Declare an array

$arr[] = $_POST['FirstField'];
$arr[] = $_POST['SecondField'];
$arr[] = $_POST['ThirdField'];  

//尽可能多的输入字段。

然后把它变成像

这样的字符串
$insertValue = implode(',',$arr); // This will create a string containing all your fields values and you can save it in single field.

只需在插入查询中使用此单个变量。

希望这会对你有所帮助。

答案 5 :(得分:0)

db连接文件与PDO另存为config.php

<?php
$dbhost = 'localhost';
$dbname = 'clsrepair';
$dbuser = 'root';
$dbpass = '';

try {
    $db = new PDO("mysql:host={$dbhost};dbname={$dbname}",$dbuser,$dbpass);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}

catch(PDOException $e) {
    echo "Connection error: ".$e->getMessage();
}
?>

然后在你想要的文件中:

if(isset($_POST['your_form']))
{
   try {
       $leavingEquipment = implode(', ', $_POST['leavingEquipment']);
       $statement = $db->prepare("INSERT INTO orderForm (orderNo,leavingEquipment) VALUES (?,?)");
       $statement->execute(array($_POST['orderNo'],$leavingEquipment));
$success_message = "Order's has been inserted successfully.";
      }
    catch(Exception $e) {
            $error_message = $e->getMessage();
    }
} 

答案 6 :(得分:0)

尝试在您的公用事业表中添加其他字段,例如1,用于租用(不可用) 0可用

查询所有公寓的指示符为0,并列出所有可用的公寓。