如何使用PHP& amp;存储MySQL数据库中的数组数据MySQL的?

时间:2010-04-21 15:19:09

标签: php mysql

我是php和mysql的新手,我正在尝试学习如何使用MySQL和PHP从三个不同的数组friend[], hair_type[], hair_color[]存储以下数组数据,一个例子会很好。感谢

这是HTML代码。

<input type="text" name="friend[]" id="friend[]" />

<select id="hair_type[]" name="hair_type[]">
    <option value="Hair Type" selected="selected">Hair Type</option>
    <option value="Straight">Straight</option>
    <option value="Curly">Curly</option>
    <option value="Wavey">Wavey</option>
    <option value="Bald">Bald</option>
</select>

<select id="hair_color[]" name="hair_color[]">
    <option value="Hair Color" selected="selected">Hair Color</option>
    <option value="Brown">Brown</option>
    <option value="Black">Black</option>
    <option value="Red">Red</option>
    <option value="Blonde">Blonde</option>
</select>





<input type="text" name="friend[]" id="friend[]" />

<select id="hair_type[]" name="hair_type[]">
    <option value="Hair Type" selected="selected">Hair Type</option>
    <option value="Straight">Straight</option>
    <option value="Curly">Curly</option>
    <option value="Wavey">Wavey</option>
    <option value="Bald">Bald</option>
</select>

<select id="hair_color[]" name="hair_color[]">
    <option value="Hair Color" selected="selected">Hair Color</option>
    <option value="Brown">Brown</option>
    <option value="Black">Black</option>
    <option value="Red">Red</option>
    <option value="Blonde">Blonde</option>
</select>

以下是MySQL表格。

CREATE TABLE friends_hair (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
hair_id INT UNSIGNED NOT NULL, 
user_id INT UNSIGNED NOT NULL, 
PRIMARY KEY (id)
);


CREATE TABLE hair_types (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
friend TEXT NOT NULL,
hair_type TEXT NOT NULL,
hair_color TEXT NOT NULL,
PRIMARY KEY (id)
);

3 个答案:

答案 0 :(得分:1)

为头发类型,头发颜色和朋友创建一个表格。

头发类型和头发颜色都需要id的主键和name字段。

朋友需要id的主键以及namehair_type_idhair_color_id的字段。

将头发类型和头发颜色的值设为数据库中的相应ID。

当你提交表单时,循环遍历$ _POST ['friend']数组,在朋友数据库中插入好友名称,头发类型ID和头发颜色ID。

不要忘记清理输入。请查看mysql_real_escape_string()以获取相关示例。

如果您需要进一步的帮助,我可以更详细地说明这一点。

答案 1 :(得分:0)

假设每个用户只能拥有一种头发类型和一种头发颜色,那么请查看一个简单的答案:http://pastie.org/928039

让我们面对现在,你现在不能同时拥有飘逸的直发吗?颜色可能不同,在这种情况下它是多对多的,所以你需要一个user_hair_colour表user_hair_colour(user_id PK,hair_colour_id PK):P

 select 
   u.*,
   hc.name as hair_colour_name,
   ht.name as hair_type_name
 from 
  users u
 inner join hair_colour hc on u.hair_colour_id = hc.hair_colour_id 
 inner join hair_type ht on u.hair_type_id = ht.hair_type_id 
 order by 
  u.username;

答案 2 :(得分:0)

你可以使用Serialise函数将数组存储到mysql数据库中,并检索使用Unserialize函数的值。 PHP serialize function