質問 > その他 > ProductController内でSELECT文を実行し、取得した値を表示する |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
masak0521 |
投稿日時: 2025/6/23 11:04
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2025/6/16 居住地: 投稿: 11 |
ProductController内でSELECT文を実行し、取得した値を表示する ▼テンプレート
[EC-CUBE]4.3 [PHP]8.3 [データベース]Mysql [現象] 現在2系から4系への移植作業を行っているのですが、 商品詳細画面に別テーブルから取得したデータを表示したいと思っております 納期などの問題もあり、一旦セキュリティ面の部分は置いておいて機能としての実装を優先したいと考えております。 上記前提で、先日当フォーラムで質問した際に「おすすめは出来ないがコントローラー内でもPHPを書いてSQL実行は可能」という返信をいただき試しております。 下記のようなコードでMySQLのDBに接続し「TEST_TABLE」の値を取得、配列に入れてRetuenに加え Twig側で表示データとして使用したいと思っております。 下記をアップロードしキャッシュ削除した結果エラーとなりPDOがネームスペースに無いという結果が返ってきました。 「Attempted to load class "PDO" from namespace "Customize\Controller". Did you forget a "use" statement for another namespace?」 ※下記を他のフォルダで実行したところ値が取れていたので、 /app/Customize/Controllerで何か制限的なものがかかっているのか・・・ 知識が足りないため、見当違いな質問になってしまっているかもしれませんが、 ご助言いただけると助かります。 ========================================================================== // $host = localhostで動かなければipアドレスを記載 $host = 'ホスト名'; // データベース名 $dbname = 'DB名'; // ユーザー名 $dbuser = 'ユーザー名'; // パスワード $dbpass = 'パスワード'; // データベース接続クラスPDOのインスタンス$dbhを作成する try { $dbh = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8mb4", $dbuser, $dbpass); $array_all = 'OK'; // PDOExceptionクラスのインスタンス$eからエラーメッセージを取得 } catch (PDOException $e) { // 接続できなかったらvar_dumpの後に処理を終了する var_dump($e->getMessage()); $array_all = 'NG'; exit; } $SQL="SELECT * FROM TEST_TABLE"; // SQLをセット $stmt = $dbh->prepare($sql); // SQLを実行 $stmt->execute(); $TEST_List = array(); while($rs = $stmt->fetch(PDO::FETCH_ASSOC)){ $TEST_List[] = array( "key_no" => $rs['key_no'], "data1" => $rs['data1'], "data2" => $rs['data2'], ); } return [ 'title' => $this->title, 'subtitle' => $Product->getName(), 'form' => $builder->getForm()->createView(), 'Product' => $Product, 'is_favorite' => $is_favorite, 'TEST_List' => $TEST_List, //ここを追加 ]; ========================================================================== |
masak0521 |
投稿日時: 2025/6/23 11:11
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2025/6/16 居住地: 投稿: 11 |
Re: ProductController内でSELECT文を実行し、取得した値を表示する ※追記
旧2系にあったように、SQL文をそのまま実行できるクエリがあればそちらを教えていただけると助かります ============================================= $objQuery = new SC_Query(); $sql = "SELECT * FROM TEST"; $TEST_LIST = $objQuery2->getall($sql); ============================================= |
mcontact |
投稿日時: 2025/6/23 11:14
対応状況: −−−
|
神 ![]() ![]() 登録日: 2022/1/22 居住地: 投稿: 1732 |
Re: ProductController内でSELECT文を実行し、取得した値を表示する ここに記載されています。
参考に。。。 https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=28951&forum=10&post_id=115330#forumpost115330
|
mcontact |
投稿日時: 2025/6/23 20:49
対応状況: −−−
|
神 ![]() ![]() 登録日: 2022/1/22 居住地: 投稿: 1732 |
Re: ProductController内でSELECT文を実行し、取得した値を表示する
エラー内容は、PDOのクラスをロードしようとしたが、PDOクラスのuse記述にて名前記述がない為ロード出来ていない為です。 先に記載している参考サイトの投稿を見て参考にしてみてください。 PDOを使用するにはPDOライブラリのuse記述にてロードする必要があります。
|
masak0521 |
投稿日時: 2025/6/24 13:25
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2025/6/16 居住地: 投稿: 11 |
Re: ProductController内でSELECT文を実行し、取得した値を表示する こちらにて回答をしたのですが
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=28951&forum=10&post_id=115330#forumpost115330 おかげさまでクラスの取得からSQLの実行までは出来たようなのですが、twig側でdumpで表示しても取得した配列の中身が空のままとなっているようです。 試せることは試してみたのですが…おそらく根本的に抜けている部分がある気がしております… ※回答は上記のツリーの方で吸収したいと思いますので、ご回答いただける場合は宜しくお願い致します |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |