cakePHPでSQLが実行できない

このQ&Aのポイント
  • cakePHP2.2でSQLが実行できません。実行のやり方が悪いのでしょうがネットで探してもイマイチ理解できません。
  • 画面から入力された値を使って、SQLを実行することができません。
  • BuhinControllerのソースコードに問題があり、query()メソッドが未定義のため、SQLの実行ができません。
回答を見る
  • ベストアンサー

cakePHPでSQLが実行できない。

cakePHP2.2でSQLが実行できません。 実行のやり方が悪いのでしょうが ネットで探してもイマイチ理解できません・・ やりたいのは画面から入力された値を使い SQLを実行することです。 何が駄目なのか教えてください。 controllerのソース <?php class BuhinController extends AppController { public $layout = 'user_default'; //## ログイン処理 public function login(){ $bool = false; $rslt = null; Configure::write('debug', 1); $sql = "select id from table_user where add = '". $_POST["add"] . "' "; $sql = $sql. " and pass = '". $_POST["pass"] . "'"; $this->query($sql); } public function index(){ } public function logout(){ $this->Auth->logout(); } } ?> エラーメッセージ Fatal Error Error: Call to undefined method BuhinController::query() File: C:\xampp\htdocs\cake\app\Controller\BuhinController.php よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

controller から直接SQL文を発行するようにはなってないです。 controller のpropatyにdefaultで登録されているmodelオブジェクトからquery()メソッドを呼び出して下さい。 modelにしても直接SQL文を作成&発行しなくてもいいようにfindメソッドが実装されているので、マニュアル読んでからやった方がいいですよ。 http://book.cakephp.org/2.0/ja/cakephp-overview/understanding-model-view-controller.html

sakura_cf
質問者

お礼

findメソッドを使用してデータ取得ができました! ありがとうございました。

関連するQ&A

  • CakePHPでのログイン画面生成について。

    CakePHPでのログイン画面生成について。 参考URLは以下です。 http://h2o-space.com/blog/1950 以上の記事の通り設定・アップロードをし、 add.phpにアクセスすると Missing Method in ViewsController Error: The action add.php is not defined in controller ViewsController Error: Create ViewsController::add.php() in file: app/controllers/views_controller.php. <?php class ViewsController extends AppController { var $name = 'Views'; function add.php() { } } ?> とのエラーが出ます。 <?php class ViewsController extends AppController { var $name = 'Views'; function add.php() { } } ?> をviews_controller.phpに書き込むと Parse error: syntax error, unexpected '.', expecting '(' in /home/rslitefc2/users/アカウント/public_html/login/app/controllers/views_controller.php on line 7 と、エラーが出ます。 7行目の記述はfunction add.php() {です。 どうしたらログイン画面を正しく生成することが出来るでしょうか? どなたかお教えいただければ幸いです。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • Cakephp AppControllerについて

    CakePHPにて、 AppControllerクラスに処理を記述しようと思い、 app/app_controller.php を設置したのですが、 app/app_controller.php がどうしても呼び出されません。 色々調べてるのですが、どうしても原因が分かりません。 原因等分かる方がおりましたら教えて頂けますでしょうか? ---------------------- ■cakephpのバージョンは1.3です。 ■app/app_controller.phpの中身は↓です。 class AppController extends Controller { function __construct() { parent::__construct(); } function beforeFilter() { echo "test"; ←これが呼ばれない。 } } ----------------------

    • ベストアンサー
    • PHP
  • PHP,SQL,オブジェクト指向プログラミング

    こんにちは。僕は、現在、PHPとSQLとオブジェクト指向を用いて、掲示板を作成しています。 今ログインフォームまで完成しましたが、その中の認証処理でつまづいています。 ソースを載せますので、アドバイス等お願いします。 session_start(); include 'class.php'; include 'useclass.php'; $its=new keijibandatabase(); $its->k_conect(); $its->k_usertable(); $its2=new userdata; $its2->k_login(); function k_usertable() { //テーブルuserの呼び出し $sql = 'SELECT * FROM user'; $stmt=$this->pdo->query($sql); while($row = $stmt -> fetch(PDO::FETCH_ASSOC)){ } //データベースクラス function k_login() { //ユーザ認証 $row; $user=$_POST['user']; $pass=$_POST['pass']; if($user===$row['uid'] && $pass===$row['pass']){ echo "成功"; }else{ echo "失敗"; } } 以上です。 これらのコードは別々のファイルに記述されています。 回答よろしくお願いします

  • classについて

    $server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; $con = mysql_connect ($server, $user, $pass); mysql_select_db ($database, $con); $sql = "SELECT * "; $sql.= "FROM `table` "; while ($result = mysql_fetch_array ($rs, MYSQL_ASSOC)) { echo $result[hoge]; } 上記と同じことを下記のようなクラスにして db.php class db { $server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; function __construct() { $this->con = mysql_connect ($this->server, $this->user, $this->pass); mysql_select_db ($this->db, $this->con); } function query($sql){ $rs = mysql_query ($sql); return mysql_fetch_array ($rs, MYSQL_ASSOC); } hoge.php $db = new db(); $sql = "SELECT * "; $sql.= "FROM `table` "; while ($db->query($sql)) { echo $result[hoge]; } のようにしたのですが、うまくいきません。 function query($sql){ $rs = mysql_query ($sql); $result = mysql_fetch_array ($rs, MYSQL_ASSOC); } とすると一行はとれるのですが、複数行とるにはどうしたらいいのでしょうか・・・ どうかよろしくお願いします。

    • 締切済み
    • PHP
  • モデルのメソッド名がSQLと解釈されます

    CakePHPで開発をしています。 モデルにメソッドを定義しコントローラーで呼び出したところ、メソッド名が SQLと解釈されるという現象に困っています。 モデル class Enquete extends AppModel {  var $name = 'Enquete';  function tyoityoi() {  } } コントローラー class EnquetesController extends AppController {   function index() {    $this->Enquete->tyoityoi();   } } こういう使い方をしているのですが、SQLシンタックスエラーが出てしまい、 ログに吐き出したSQLを見ると、tyoityoiがSQL文と解釈されてしまっていました。 同じコントローラーで、Enqueteモデルのsave()めそっどを呼び出していますが、 そちらは正常動作しています。どなたか原因の分かる方いらっしゃいませんか? もしくは、モデルのメソッドを実行するときに動くCakePHPのコードの位置を、 教えていただけませんか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • CakePHPのredirect()関数について

    <?php App::uses('AppController', 'Controller'); class DayController extends AppController{ public function index(){ $this->autoRender = false; $date = new DateTime(); $date->setTimeZone(new DateTimeZone('Asia/Tokyo')); $str = $date->format("H:i:s"); $this->redirect("./other/".urlencode($str)); } public function other($param){ $this->autoRender = false; $str = urldecode($param); echo '<html><head><title>現在時刻</title>'; echo '<meta charset="UTF-8"></head>'; echo '<body>'; echo '<h1>現在の時刻は、'.$str. 'です。</h1>'; echo '</body></html>'; } } ?> 上記のようなスクリプトをApacheのhtdodos./cakephp/App/Controller フォルダに入れて 動作させると、下記のようなエラーが出力されます。 redirect() 関数の引数がおかしいようですが、どこがどうおかしいのか 教えていただけませんか。 Warning (2): Missing argument 1 for DayController::other() [APP\Controller\DayController.php, line 14] Notice (8): Undefined variable: param [APP\Controller\DayController.php, line 16]

    • 締切済み
    • PHP
  • cakephpでidに紐づけて記事を表示

    cakephpでblogアプリケーションを作成しています。 /blog/記事のID のURLをクリックすると該当の記事が見れるようにしたいです。 不思議なのですが、DB側のカラム名がid(blogのID名)だと正しく表示されるのですが、DBの値をnoやnooなどid以外の値にすると何も表示されません。 デバッグのSQLさえも何も表示されない状況です。 具体的なコードを記載します。 正しく表示される場合 コントローラ class PostsController extends AppController { public $helpers = array('Html','Form'); public function index(){ $this->set('posts',$this->Post->find('all')); } public function view($xxx = null){ $this->Post->id = $xxx; $this->set('post',$this->Post->read()); } } ビュー <h2><?php echo h($post['Post']['num']); ?></h2> <p><?php echo h($post['Post']['hel']); ?></p> モデル <?PHP class Post extends AppModel { } ?> 何も表示されない場合 コントローラ 以下だけが上記と異なります。 public function view($xxx = null){ $this->Post->no = $xxx; ★この部分 $this->set('post',$this->Post->read()); } ビュー・モデルは同上で、DBのカラム名をidからnoに変更しています。 データベースの中身は以下です。 以下のidをnoに変更した場合うまくいきません。 id num hel _________________ 3 4 hello world 21 21 abcde 0 3 okokokoko 何かアドバイスいただけないでしょうか。 viewを見る際に何もデバッグ情報が出ないので何が悪いのかもわからない状況です。

    • 締切済み
    • PHP
  • SQLファイルの読み込み

    PHP上にSQL文を書くことはできますがSQLファイルを読み込むことはできるのでしょうか? 例えばSQL上では %\i create.sql のように実行してテーブルを作りますがこれを同じようにPHP上で $conn = pg_connect("host=localhost dbname=**** user=****"); $query = "\i create.sql"; pg_query($conn, $query); と記述してもエラーになってしまいます。 PHP上ではそもそも読み込みはできないのでしょうか? それとも文字型の指定などが間違っているのでしょうか?

    • 締切済み
    • PHP
  • CakePHP redirect関数の文法

    <?php App::uses('AppController', 'Controller'); class DayController extends AppController{ public function index(){ $this->autoRender = false; $date = new DateTime(); $date->setTimeZone(new DateTimeZone('Asia/Tokyo')); $str = $date->format("H:i:s"); $this->redirect("./other/".urlencode($str)); } public function other($param){ $this->autoRender = false; $str = urldecode($param); echo '<html><head><title>現在時刻</title>'; echo '<meta charset="UTF-8"></head>'; echo '<body>'; echo '<h1>現在の時刻は、'.$str. 'です。</h1>'; echo '</body></html>'; } } ?> 上記のようなCakePHPのスクリプトにおいて、下記のようなエラーが返ってきます。 Warning (2): Missing argument 1 for DayController::other() [APP\Controller\DayController.php, Notice (8): Undefined variable: param [APP\Controller\DayController.php, redirect()関数の引数がおかしいのでしょうか。

  • cakephp エラーハンドリングができません

    cakephpを利用しているシステムで、2種類のエラーを作っておいてcontrollersの呼び出しで振り分けたいと思いますがうまくできません。 マニュアルページ(http://book.cakephp.org/ja/view/154/Error-Handling)を参考に、 app/app_error.phpを以下のように作成しました。 ((1)エラー:error(2)エラー:errorsta) ----------------------------------------------------------------- <?php class AppError extends ErrorHandler{ function error(){ $this->controller->viewPath = 'errors'; $this->__outputMessage('error'); } function errorsta(){ $this->controller->viewPath = 'errors'; $this->__outputMessage('errorsta'); } } ?> ----------------------------------------------------------------- 上記内容で、メソッドerrorは実行できるのですが、errorstaが一向に動いてくれず、404扱いになってしまいます。 app/app_error.php以外にも設定が必要なものがあるのでしょうか?

    • 締切済み
    • PHP

専門家に質問してみよう