我希望有人可以提供帮助。
我确信它只是一个简单的因为某些原因而无法解决的问题。
基本上我有一个处理所有数据库功能的类(连接,选择,插入,更新)。
在select函数中,我返回一个数组。
public function getAll($table, $cols, $where, $limit, $order) {
// Set the query variables
if($cols == '') {
$cols = '*';
}
if($where!='') {
$where = ' WHERE '.$where;
}
if($limit!= '') {
$limit = ' LIMIT '.$limit;
}
if($order!='') {
$order = ' ORDER BY '.$order;
}
// Make the query string
$sql = 'SELECT '.$cols.' FROM '.$table.$where.$order.$limit;
//echo $sql;
// Set the query
$news_qry = mysql_query($sql);
// Set the array
$rows = array();
// Run a loop through the results
while($item = mysql_fetch_object($news_qry))
{
// Add each row to an array.
$rows[] = $item;
}
return $rows;
}
此功能正常,因为我可以打印数组。见下文:
Array ( [Gallery_id] => 1 [Gallery_Name] => Test [Gallery_FolderName] => Test Folder )
但是当我去使用对象时 -
$arr_GalleryInfo = $dataObj->getAll('tbl_Gallery', '', '', '', '');
在每个循环中(见下文)我只从数据库中得到结果的第一个字母。
<?php
foreach ($arr_GalleryInfo[0] as $arrGallery)
{
?>
<tr>
<td>
<?php echo $arrGallery['Gallery_Name']; ?>
</td>
<td>
<?php echo $arrGallery; ?>
</td>
<td>
<?php echo $arrGallery; ?>
</td>
</tr>
<?php
}
?>
任何帮助都会很棒。
感谢。
答案 0 :(得分:10)
替换:
foreach ($arr_GalleryInfo[0] as $arrGallery)
{
etc...
使用:
foreach ($arr_GalleryInfo as $arrGallery)
{
etc...
答案 1 :(得分:2)
好吧,你的大问题是你正在尝试迭代数组的0索引。
foreach ($arr_GalleryInfo[0] as $arrGallery) // get rid of the `[0]`.
这将使你真正得到一些合法的迭代,但还有一些其他的东西你将要被击中。
// this will output `Array`. You want $artGallery['Gallery_FolderName']
// or $artGallery['Gallery_id']
echo $arrGallery;
当然,您可以使用嵌套循环来避免整个第二个问题:
foreach ($arr_GalleryInfo as $arrGallery) {
echo '<tr>';
foreach($arrGallery as $val ) echo "<td>$val</td>";
echo '</tr>';
}
如果$news_qry = mysql_query($sql);
失败,如果出现问题,您将无需提醒您。你应该做到:$news_qry = mysql_query($sql) or die(mysql_error());
当然,您应该在所有数据库输入上使用mysql_real_escape_string
。