作为一名实习生,我意识到我花了大量时间在PHP中使用sql查询构建和操作表。我目前的方法是使用两个foreach循环:
foreach($query as $record){
foreach($record as $field => $value){
*Things that need to be done on each field-value pair*
}
*Things that need to be done on each row*
}
有更好的方法吗?
此外,我倾向于将数据打包为一个〜分隔列表并将其存储在服务器中,这是一种不好的做法吗?
我宁愿放一些代码进行审核,但我不想冒险暴露公司鳕鱼的内部。
答案 0 :(得分:0)
Foreach循环是迭代数据的最佳方式。如果您希望使代码更漂亮,请尝试使用三元版本
<?php foreach($query as $record) : ?>
<?php foreach($record as $field => $value) : ?>
*Things that need to be done on each field-value pair*
<?php endforeach; ?>
*Things that need to be done on each row*
<?php endforeach; ?>
此外,如上面的评论中所述,在数据库中存储〜分隔数据时会丢失很多功能。如果必须这样做,可以尝试存储序列化对象而不是分隔字符串。您可以通过多种方式操作对象,例如json_encode()和json_decode()
$myArray = array();
$myArray['User1']['book'] = 'Pride and Prejudice';
$myArray['User1']['favorites'] = 'Water skiing';
$myArray['User2']['book'] = 'Mansfield Park';
$myArray['User2']['favorites'] = array('skateboarding', 'surfing', 'running');
$myArray['description'] = 'Things people like.';
echo '<pre>';
print_r(json_encode($myArray)); //This will convert your array to a string for the db
echo '</pre>';
echo '<pre>';
$myArrayString = json_encode($myArray);
print_r(json_decode($myArrayString)); //This will convert the db string to an object for manipulation
echo '</pre>';
答案 1 :(得分:0)
没有内置的方法可以从查询结果中生成HTML表。如果你发现自己一遍又一遍地编写那种代码,那么创建一个可重用的类或库将是一个很好的选择。例如:
$table = new HTMLTable();
$table->setData($data);
echo $table->toHTML();
上面不是工作代码,只是一个如何创建可重用代码的示例,而不是多次重复相同的表构建代码。
答案 2 :(得分:0)
我倾向于使用while
循环和mysql_fetch_..
函数之一。但基本上它和你做的一样。
$query = 'SELECT
stuff
FROM
table';
if ($query = mysql_query($query)) {
while ($row = mysql_fetch_assoc($query)) {
foreach ($row as $key => $value) {
/* Things that need to be done on each field-value pair */
}
/* Things that need to be done on each row */
}
}
至于〜分隔列表。我强烈建议将数据保存在单独的数据库字段中,而不是像这样打包。只需为每个这样的包创建一个新表。