【发布时间】:2015-03-09 03:29:48
【问题描述】:
这个 php 脚本返回 mySQL 数据库中的每一行:
<?php
$host = "host_name";
$db = "database_name";
$user = "user_name";
$pass = "password";
$connection = mysql_connect($host, $user, $pass);
//Check to see if we can connect to the server
if(!$connection)
{
die("Database server connection failed.");
}
else
{
//Attempt to select the database
$dbconnect = mysql_select_db($db, $connection);
//Check to see if we could select the database
if(!$dbconnect)
{
die("Unable to connect to the specified database!");
}
else
{
$query = "SELECT * FROM farmer";
$resultset = mysql_query($query, $connection);
$records = array();
//Loop through all our records and add them to our array
while($r = mysql_fetch_assoc($resultset))
{
$records[] = $r;
}
//Output the data as JSON
echo json_encode($records);
}
}
?>
此脚本运行良好,但会返回每一行。
假设我的数据库包含农民的姓名及其产品类型。第一列是“id”,第二列是“farmer_name”,第三列是“produce”。农产品是这样输入的:豆类、玉米、生菜、草莓、西红柿。
我想要做的是更改上述脚本,使其仅返回包含种植玉米的农民的姓名以及他们种植的所有农产品类型的行。所以,我不仅要名字,还要所有产品的清单,只要农民种玉米。
这是否可能基于数据库的结构方式?我用针/干草堆做了几次尝试,但空手而归。我对php知之甚少。
【问题讨论】:
-
首先如果你有能力设计表格的结构,不要这样做,因为它是反规范化的
-
澄清一下,product 列是每行包含一个项目,还是包含所有产品的字符串?
-
后者会很糟糕!
-
它包含一个字符串。我能想到构造它的唯一另一种方法是为每个添加一列。这会是最佳做法吗?
-
绝对不是。查看 1NF、2NF、3NF 和 E.F. Codd。如果我写给你,我很乐意