• 締切済み

PHPとSmartyの関連について

PHPとSmartyの関連について PHPからSmartyに出力しているのですが中身がNULLになります。 データベースアクセスにはPDOを使用しています。 PHPソース DBアクセス $SQL = "select ITEM_ID from ITEM_TBL limit 0, 3"; $STMT = $GLOBALS["PDO"] -> query($SQL); $ROW = $STMT -> fetchAll(PDO::FETCH_ASSOC); Smartyでアサイン $smarty -> assign("ITEM_LIST", $ROW); Smartyソース <table> {{foreach from=$ITEM_LIST item=LIST}} <tr> <td>{{$LIST.ITEM_ID}}</td> </tr> {{/foreach}} </table> のような感じでページ出力したいのですが、表示をすると中身がNULLでした。 PHP側で var_dump($ROW); を行うと array(3) { [0]=> array(1) { ["ITEM_ID"]=> string(1) "1" } [1]=> array(1) { ["ITEM_ID"]=> string(1) "2" } [2]=> array(1) { ["ITEM_ID"]=> string(1) "3" } } 中身が配列で格納されています。 smarty側で {$ITEM_LIST|@var_dump} を行うと array(3) { [0]=> NULL [1]=> NULL [2]=> NULL } でした。 いろいろとやってみたのですが、わからなくなってしまったので どなたかご教授いただけませんでしょうか。よろしくお願いします。

みんなの回答

noname#87667
noname#87667
回答No.2

すみません。読み間違えて意味不明な回答を書いてしまいました。忘れて下さい。 さて、PDOについては知識がないのでわからないのですが、動作しなかった環境はPDOが動作するようになっているのでしょうか。 # ちょっと調べたところ、SQLiteには標準でついてくるそうですね。 あと、はずしているかもしれませんが、{foreach from=$ITEM_LIST item=LIST}とするとどうなりますか?({}を二重にする必要はなかったような気がします)

rozaleon
質問者

補足

ありがとうございます。 PDOに関しては機能が同梱されているので 問題なく動きます。phpinfoでも確認しました。 {foreach from=$ITEM_LIST item=LIST} の部分は、XSS対策としてSmartyで{{}}の中のみ処理するように 書き直しているので、動作には支障ないと思います。。。

noname#87667
noname#87667
回答No.1

1次元連想配列になっていないからではないでしょうか。

参考URL:
http://php.tech-manual.org/smarty/2.6.14/ja/language.function.foreach.html
rozaleon
質問者

補足

アドバイスありがとうございます。 少し気になったので、こちらの別環境でまったく同じものを実行したところ さきほどの array(3) { [0]=> array(1) { ["ITEM_ID"]=> string(1) "1" } [1]=> array(1) { ["ITEM_ID"]=> string(1) "2" } [2]=> array(1) { ["ITEM_ID"]=> string(1) "3" } } この出力(2次元配列?)でも問題なくSmartyで動作したのです。 サーバー環境によって処理される内容もかわってくるのでしょうか。 こちらに環境を記載しますので、判断していただけるとありがたいです。 環境の違い 動作しなかった環境 ローカル(XAMPP使用) PHP Version 5.2.9 Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9 サーバ: localhost via TCP/IP サーバのバージョン: 5.1.33-community MySQL クライアントのバージョン: 5.0.51a 動作した環境 レンタルサーバー PHP Version 5.2.9 Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 サーバ: Localhost via UNIX socket サーバのバージョン: 5.0.75-community-log MySQL クライアントのバージョン: 5.0.75

関連するQ&A