Home >Backend Development >PHP Tutorial >关于smarty取oracle数据数组后传递时,只取每个字段第一个字符的问题

关于smarty取oracle数据数组后传递时,只取每个字段第一个字符的问题

WBOY
WBOYOriginal
2016-06-23 13:54:021154browse

我刚接触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');?>


以下是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;           }

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn