我正在开发类似于简单且特定于目的的cms。
我正在使用一个db类,它从查询中输出一个数组,但是这个数组的结构因mysql_num_rows而异。
如果只有一个结果,则输出一个简单数组,否则输出一个嵌套数组。
所以,我必须检查数组的结构,以决定是否使用foreach进行循环,或者只打印结果。
使用简单的mysql_fetch_assoc我们可以使用while()然后行数没有问题。但是我们必须检查它。
直到现在一切正常。
问题是代码将针对这两个条件重复进行。稍微改变数组名称。
数组名称是$ res,如果一个结果是$res['anything here']
,否则,因为我们必须使用foreach($res as $row)
,所以数组将是$row['anything here']
。
因此代码看起来很丑陋而且很大。请在这里拿一个lool:http://mohamedkadri.com/code.html并告诉我如何使它变得更简单和更小。
答案 0 :(得分:6)
解决方案很简单:
更改数据库图层,以便强制它返回行列表,即使只有一行也是如此。这是唯一合适的解决方案。
答案 1 :(得分:3)
这不是一个好方法。我建议更改您的数据库类,以便根据查询是返回一行还是多行来调用其他方法。例如。在Zend Framework数据库类中,有fetchRow
和fetchAll
。这将使您更容易处理您获得的数据。
另一种选择可能是即使只有一行也总是返回一个嵌套数组。这样,处理数据的代码将始终相同。