Home >Backend Development >PHP Tutorial >关于smarty取oracle数据数组后传递时,只取每个字段第一个字符的问题
我刚接触smarty,在获取oracle数据以后,传递时发现只取每个字段的第一个字符,而且还是乱码。
代码如下:
smarty.php
<?phpinclude 'ora/oraconn.php'; $dRootDir = '../../'; require_once($dRootDir . '_config.php'); require_once($dRootDir . 'inc/params.php'); require_once($dRootDir . 'inc/classes/db.php'); require_once($dRootDir . 'inc/classes/template.php'); require_once($dRootDir . 'inc/classes/util.php'); $tpl = new Template($gTemplate);Util::gpc();$sql="SELECT bpcnum_0 as BPCNUM,bpcnam_0 AS BPCNAM from bpcustomer where rownum<10";$stmt = oci_parse($conn, $sql);oci_execute($stmt);$array = oci_fetch_array($stmt, OCI_BOTH);$tpl->assign('ssss',$array); $tpl->assign("News_CH", $array); unset($array); $tpl->display('smarty.tpl');?>
<table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#B9E9FF"><tr> <td height="115" width="10"></td><td valign="top" width="295" bgcolor="#B9E9FF">{--section name=customer loop=$News_CH--}<li ><a href="news.php?type=1&id={--$News_CH[customer].BPCNUM--}" >{--$News_CH[customer].BPCNAM--}</a></li>{--/section--}</td></tr></table>
先不管 smarty
在 $array = oci_fetch_array($stmt, OCI_BOTH);之后
print_r($array);
看看都是些什么
谢谢 xuzuning秒回,显示出来的结果一切正常,中文显示没有乱码,现在是传递到smarty.tpl上出现乱码,而且每个字段值出现第一个字符。
最好给我看看
就是这个效果
如果我自定义一个array,传递数据不会乱码,但是从Oracle数据库读取的话,就会出现上述问题!
我要看到你从数据库读出的数据!
按 oci_fetch_array($stmt, OCI_BOTH) 应该是下标数组
那么 $News_CH[customer].BPCNUM 就是错的
但需要看到数据才能确定
在smarty.php 中 print_r($array);exit(); 看看是什么结果。
可能你输出的不是一个正常的数组,看下输出的数据有没有问题;
谢谢各位的帮助,是我的数组有问题。
后来用mysql测试了一下,是数组赋值错了,用一下代码就解决了。
$query_sql = "SELECT * FROM mc_admingroups"; //执行查询语句 返回一个结果集 $query_res = mysql_query($query_sql,$conn); $array=array(); while ($row = mysql_fetch_array($query_res, MYSQL_ASSOC)) { $array[] = $row; }