CakePHPのエラー: SQLSTATE[42000]: Syntax error or access violation: 1064

このQ&Aのポイント
  • CakePHPでSQLエラーが発生しており、マニュアルを確認しても解決方法がわからない
  • エラーはvalidateSearchの付近で発生している
  • searchpluginを使っているが、上手く動作しない
回答を見る
  • ベストアンサー

cakePHPのエラー

Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'validateSearch' at line 1 SQL Query: validateSearch Notice: If you want to customize this error message, create app/View/Errors/pdo_error.ctp というエラーが出て困っています。 validateSearchの付近を確認してもよくわかりません。 searchpluginを使っているのですが、上手くいきません。 コントローラーは、 <?php App::uses('AppController', 'Controller'); class Mac554FoodDatasController extends AppController { public $name='Mac554FoodDatas'; public $components =array('Search.Prg'); public $presetVars=array(); public function beforeFilter() { //検索対象のフィールド設定代入 $this->presetVars = $this->Mac554FoodData->presetVars; // ページャ設定 $pager_numbers = array( 'before' => ' - ', 'after'=>' - ', 'modulus'=> 10, 'separator'=> ' ', 'class'=>'pagenumbers' ); $this->set('pager_numbers', $pager_numbers); } public function find() { $datas=$this->Mac554FoodData->find('all'); $this->set('datas',$datas); //検索条件設定 $this->Prg->commonProcess(); //検索条件取得 $tabe=$this->passedArgs; $conditions = $this->Mac554FoodData->parseCriteria['$tabe']; //ページャ関係 $this->paginate =array( 'conditions' => $conditions, 'limit' =>10 ); $this->set('Mac554FoodDatas',$this->paginate('Mac554FoodData')); // レイアウト関係 $this->layout = "plain"; $this->set("header_for_layout", "Sample Application"); $this->set("footer_for_layout", "copyright by SYODA-Tuyano. 2011."); // post時の処理 //$this->set('Mac554FoodDatas',$this->Mac554FoodData->find('all')); } public function index() { $this->layout = "plain"; $this->set("header_for_layout", "Sample Application"); $this->set("footer_for_layout", "copyright by SYODA-Tuyano. 2011."); //レイアウト } } ?> で、検索フォームはエレメントで <?php echo $this->Form->create('Mac554FoodData', array('url' => '/Mac554FoodDatas/find'))?> <fieldset> <legend>Search or Die!</legend> <dl> <dt><label>ユーザname</label></dt> <dd><?php echo $this->Form->input('name', array( 'type' => 'text', 'div' => false, 'label' => false))?></dd> <dt><label>time</label></dt> <dd><?php echo $this->Form->input('time', array( 'type' => 'text', 'div' => false, 'label' => false ))?></dd> <dt><label>naiyoudao</label></dt> <dd><?php echo $this->Form->input('naiyoudao', array( 'type' => 'text', 'div' => false, 'label' => false ))?></dd> </dl> <?php echo $this->Form->submit('検索',array('div'=>false,'escape'=>false))?> </fieldset> <?php echo $this->Form->end()?> のように作りました。 モデルは、 <?php class Mac554FoodDatas extends AppModel{ public $name=Mac554FoodData public $actsAs = array('Search.Searchable'); // 検索対象のフィルタ設定 public $filterArgs = array( array('name' => 'name', 'type' => 'value', 'field' => 'Mac554FoodData.name'), array('name' => 'time', 'type' => 'like', 'field' => 'Mac554FoodData.time'), array('name' => 'naiyoudao', 'type' => 'like', 'field' => 'Mac554FoodData.naiyoudao'), ); //検索対象のフィールド設定 public $presetVars = array( array('field' => 'name', 'type' => 'value'), array('field' => 'time', 'type' => 'value'), array('field' => 'naiyoudao', 'type' => 'value'), ); } という感じで作りました。 投げているSQL文を見ると、 SELECT `Mac554FoodData`.`id`, `Mac554FoodData`.`time`, `Mac554FoodData`.`name`, `Mac554FoodData`.`naiyoudao`, `Mac554FoodData`.`twinoid` FROM `mac554_foodlog`.`mac554_food_datas` AS `Mac554FoodData` WHERE 1 = 1 となっています。 よろしくお願い致します

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

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

  • ベストアンサー
  • ts3m-ickw
  • ベストアンサー率43% (1248/2897)
回答No.1

SQL文のwhere以降がおかしいんじゃない?

関連するQ&A

  • cakephpのアソシエーションについて

    cakephp について勉強中です。 初心者なのでぜひ教えていただきたいのですが、 ・[Profile]と[Image]というテーブルがあり、ProfileについてImagesとのアソシエーションが  hasmanyなのですが、 コントローラーで  $datas = $this->Profile->find("all"); $this->set("datas",$datas); とした場合、view側でProfileのデータもImageのデータも表示されるにはどうしたらよいのでしょうか。 今は <?php foreach($datas as $data):?> <?php echo $data['Profile']['id']; ?> <?php echo $data['Image']['id']; ?> <?php endforeach; ?> とやっていますが、Imageテーブルのデータが出ません。 大変基本的なことだとは思いますがご指導いただければと思います。よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPによるアンケートの項目追加

    質問投稿させていただきます。 急遽仕事でPHPのアンケートの項目を追加することになったのですが PHPは全くの素人で困っています。 既存のアンケートに項目を追加したいのですが <h2>アンケートフォーム</h2> <form action="question2.php" method="post"> <dl class="clearfix"> <dt>性別は?</dt> <dd> <?php $male = '男性'; $female = '女性'; $number = array('1', '2'); echo ' <label><input type="radio" name="gender" value="' . $number[0] . '" />' . $male . '</label>' . "\n"; echo ' <label><input type="radio" name="gender" value="' . $number[1] . '" />' . $female . '</label>' . "\n"; ?> </dd> <dt>年齢は?</dt> <dd> <label> <select name="age"> <option value="0" selected="selected">選択してください</option> <?php for ($num = 1; $num <= 4; $num++) { echo ' <option value="' . $num . '">' . $num . '0代</option>' . "\n"; } ?> <option value="5">50代以上</option> </select> </label> </dd> <dt>趣味は?</dt> <dd class="hobby-area"> <?php $hobby = array(1 => '音楽鑑賞', 2 => '映画鑑賞', 3 => 'ドライブ', 4 => '旅行', 5 => 'その他'); foreach ($hobby as $key => $value) { echo ' <label><input type="checkbox" name="hobby[' . $key . ']" value="' . $key . '" />' . $value . '</label>' . "\n"; } ?> </dd> </dl> <p> <input type="submit" value="投票する" /> </p> </form> この文に <dt>趣味は?</dt> <dd class="hobby-area"> <?php $service = array(1 => 'あああ', 2 => 'あああ', 3 => 'あああ', 4 => 'あああ', 5 => 'あああ'); foreach ($service as $key => $value) { echo ' <label><input type="checkbox" name="service[' . $key . ']" value="' . $key . '" />' . $value . '</label>' . "\n"; } ?> </dd> </dl> このように項目を増やしたいのですがなぜか追加した項目の確認ページで Warning: Invalid argument supplied for foreach() in ~ と表示され echo '<dt>サービスは?</dt>'; echo '<dd>'; foreach ($service as $value) { switch ($value) { case 1: echo 'あああ<br />'; break; case 2: echo 'あああ<br />'; break; case 3: echo 'あああ<br />'; break; case 4: echo 'あああ<br />'; break; case 5: echo 'あああ<br />'; break; } } echo '</dd>'; この部分にエラーがあると表示されてしまいます。 これは$serviceに値がうまくいっていないということでしょうか? 素人の質問なので足りない処などあると思いますが よろしければ御回答ください。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • フォームデータの内容が確認画面で反映されません。

    フォームデータの内容が確認画面で反映されません。当方素人ですので優しくお答えいただけますと幸いです。 まず入力画面がこちら。 <dt>御社名 <span class="must">&#8251;必須</span></dt> <dd><input type="text" class="inputs" name="company_name" placeholder="例)wash life" value="<?php echo form_field["company_name"]; ?>"></dd> <dt>住所 <span class="must">&#8251;必須</span></dt> <dd><input type="text" class="inputs" name="aaa" placeholder="例)大阪市中央区" value="<?php echo $form_field["aaa"]; ?>"></dd> <dt>購入代理店名又は担当者名<span class="must">&#8251;必須</span></dt> <dd id="_field_your_name"><input type="text" class="inputs" name="your_name" value="<?php echo $form_field["your_name"]; ?>" placeholder="例)田中太郎"></dd> <dt>お名前<span class="must">&#8251;必須</span></dt> <dd id="_field_user_name"><input type="text" class="inputs" name="user_name" value="<?php echo $form_field["user_name"]; ?>" placeholder="例)山田太郎" value=""></dd> そして確認画面がこちら。 <dt>御社名</dt> <dd><?php echo h($form_field['company_name']);?></dd> <dt>住所</dt> <dd><?php echo h($form_field['aaa']);?></dd> <dt>購入代理店名又は担当者名</dt> <dd><?php echo h($form_field['your_name']);?></dd> <dt>お名前</dt> <dd><?php echo h($form_field['user_name']);?></dd> 御社名とお名前は入力した文字が確認画面で反映されるのですが、他の2つは反映されません。 どなたかよろしくお願いいたします。

    • 締切済み
    • PHP
  • CakePHPのsyntaxエラーについて

    お世話になります。 CakePHPでサイト構成をしています。 教本に従ってコードを書いています。 最も簡単なサイトを作るという章で、MyPagesContorllerを作り、Viewにindex.ctpとedit.ctpを作り、ModelにUser.php、 ContollerにUsersController.phpを作りました。 ユーザーの一覧表示まで出来ましたが、編集機能を作るところでつまずいてます。 UsersController.php <?php class UsersController extends AppController { //モデルの指定(users) public $uses = array('User'); //レイアウトの指定(defaultの場合はなくても動作する) public $layout = 'default'; //indexアクション public function index () { $userData = $this->User->find('all'); //Viewにデータを送る $this->set('userData', $userData); } } //editアクション public function edit($id = null) { if($this->request->isPost() || $this->request->isPut()) { if(!empty($this->data)) { if($this->User->save($this->data)) { $this->Session->setFlash('保存しました'); $this->redirect(array('action' => 'index')); return; } } 下記の様なエラーが表示されてしまいます。 Error: syntax error, unexpected 'public' (T_PUBLIC) 本にある通りに記述して、何度も確認しましたが間違いが見つけられません。 写真に添付しているline20の前後を見ても特にミスは無い様に思えます どこが間違っているのでしょうか。。。 ちなみにeditアクションのソースを消すと、エラーは表示されません。 どなたかご教授頂けないでしょうか。 宜しくお願いいたします。

  • phpのフォームについて

    phpで問合せフォームを作成中なのですが、分からない点が3点あります。 ご教示お願い致します。 (1)問合フォームの入力項目の最後の送信ボタンに下記のコードで「submit」を入れると、入力項目である郵便番号を入れると自動で住所表示(Ajaxzip2を使用)する機能が作動しなくなります。「submit」を入力しないと自動表示されますが、データーは送信されません。 どうしたらよいのでしょうか。 【問合せフォームの入力画面のコード/HTML】 <form method="POST" action="visit Application.php" > <h3 class="taitoru11">問合せ</h3> <label for="name">お名前を入力して下さい</label> <input type="text" name="name" id="name" placeholder="例)山田value=""> <label for="number">電話番号</label> <input type="tel" name="tel" id="tel" placeholder="例)0123" value="">   <label for="mail">メールアドレス</label> <input type="text" name="mail" id="mail" placeholder="例)" value="">    <label for="zip">郵便番号&nbsp;&nbsp;※必須</label> <input type="text" name="zip" id="zip" value="" placeholder="xxx-xxxx"maxength="8" />     <label for="addr">住所</label> <input type="text" name="addr" id="addr" /> <label for="addr2">マンション・部屋番号</label> <input type="text" name="addr2" id="addr2" /> <label for="comment">その他コメント</label> <textarea id="comment" name="comment" placeholder="問合せ内容をご記入ください" value="" wrap="hard" ></textarea> <input type="submit" value="入力内容を確認する" data-inline="true"/> </form> (2)上記のコードにある<input type="submit" value="入力内容を確認する" data-inline="true"/> を入力すると、ボタンを押さなくても、入力項目でエンターを2回押すと、送信先に勝手に送信されてしまいます。 どうしてでしょうか? また、ボタンを押さないと送信されない様にするにはどうすればいいのでしょうか。 (3)(1)のデーターの送信先で、上記の「その他コメント」欄については改行表示をさせたく、下記の様に「nl2br」を使ってみましたが、改行されませんでした。どうしたらよいのでしょうか。 【問合せフォームの送信先のコード/PHP】 <dl> <dt>お名前</dt> <dd><?php print(e($_POST['name'])); ?></dd> <dt>電話番号</dt> <dd><?php print(e($_POST['tel'])); ?></dd> <dt>メールアドレス</dt> <dd><?php print(e($_POST['mail'])); ?></dd> <dt>郵便番号</dt> <dd><?php print(e($_POST['zip'])); ?></dd> <dt>住所</dt> <dd><?php print(e($_POST['addr'])); ?></dd> <dt>マンション・部屋番号</dt> <dd><?php print(e($_POST['addr2'])); ?></dd> <dt>その他コメント</dt> <dd><?php print(nl2br(e($_POST['comment']))); ?></dd> </dl> 何卒よろしくお願い致します。

    • ベストアンサー
    • PHP
  • CakePHP 1.3について

    CakePHPが初心者です。 Views-userdetail-index.ctpにて <?php echo $form->create(null,array('type'=>'get','action'=>'./updateRecord')); ?> ~ <?php echo $form->textarea("User.remarks", array("cols" => 22,"rows" => 2)); ?> ~ を記述し、userdetail_controllerにて function updateRecord(){ if (!empty($this->data)){ $this->User->id = 1; $this->User->saveField('remarks','exists'); } else { $this->User->id = 1; $this->User->saveField('remarks','empty'); } $this->redirect('.'); } を記述しています。 しかし、どうしても「!empty($this->data)」の判別によってemptyとなってしまいます。 User.remarksの部分をUserdetailにして色々ためしましたが、どうしても値の受け渡しがうまくいかないのです。 どなたかご教授を宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHPのコードがブラウザに剥き出しで表示される。

    先日、VertrigoをインストールしたWindows7でPHPの勉強を始めた初心者です。 教則本が届いたので、さっそく本に書いてある通りにコードを入力していたのですが、最初は正しく表示されたものが下記のようにブラウザにphpのコードが剥き出しに表示されるようになりました。 ↓表示結果 性別は? ' .$male. ' ' . "\n"; echo ' ' .$female.''."\n"; ?> 調べてみても原因がわかりません。.iniの設定も本に書いてある通り作業したのですが…。 何が原因なのでしょうか? 一応、入力したコードの一部も載せておきます。 <form action="question2.php" method="post"> <dl class="clearfix"> <dt>性別は?</dt> <dd> <?php $male = '男性'; $female= '女性'; $number = array('1','2'); echo ' <label><input type="radio"name="gender" value="'.$number[0].'" />' .$male. '</label> ' . "\n"; echo ' <label><input type="radio" name="gender" value="'.$number[1].'"/>' .$female.'</label>'."\n"; ?> 是非回答お願いします。

    • 締切済み
    • PHP
  • wordpress 検索フォームと結果を同ページで

    wordpressで検索フォームと検索結果を作成しています。 検索フォームは <form action="<?php echo home_url(); ?>" method="get"> <dl> <dt> お部屋のタイプ</dt> <dd> <?php wp_dropdown_categories(array( 'show_option_all' => '全てのタイプ' )); ?></dd> <dt> こだわり検索</dt> <dd> <?php $terms = get_terms('good'); foreach ($terms as $term): ?> <label> <input type="radio" name="good" value="<?php echo esc_attr($term->slug); ?>"> <?php echo esc_html($term->name); ?></label> <?php endforeach; ?> </select> </dd> <dt> キーワード</dt> <dd> <input type="text" value="" name="s" /> </dd> </dl> <input type="submit" value="この内容で検索!" /> </form> としています。 検索結果は「search.php」を作り <div id="wrapper"> <h4 class="h4_search">★検索結果</h4> <div id="content"> <section> <?php if (is_search()) : ?> <?php endif; ?> <?php if (have_posts()) :?> <div class="postWrap"> <?php while (have_posts()) : the_post(); ?> <article id="post-<?php the_ID(); ?>"> <div class="search"> <header> <h5><a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><span><?php the_title(); ?></span></a></h5> <a href="<?php the_permalink(); ?>"> <?php the_post_thumbnail(); ?></a> <?php echo mb_substr(get_the_excerpt(),0, 50);?> <a href="<?php the_permalink();?>">&emsp;…&nbsp;続きを読む</a> </header> </div> <?php endwhile; ?> </div> <?php endif; ?> としています。 このままでは、検索フォームのあるページから別のページ(search.php)に飛んで検索結果が出ます。 ここで、検索結果を検索フォームのあるページ内で表示したいと思っております。 検索フォームに入力し、submitボタンを押すと、そのすぐ下に検索結果がずらりと表示できるようにしたいです。 このようなことは可能でしょうか? できればプラグインを使わずに実現したいので、コードを教えていただければ有難いです。 何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP に詳しい方教えてください

    以下のスクリプトを実行作成して実行するとエラーが出てしまいます。エラーを出さないようにする方法を教えていただけませんか。 ※ エラーがでるものの、正常に動作はしています。 ---エラーメッセージ--- Notice: Use of undefined constant id - assumed 'id' in C:\xampp\htdocs\shop\update.php on line 12 --スクリプト--- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>商品管理</title> </head> <body> <?php require('dbconnect.php'); $id = $_REQUEST[id]; $sql = sprintf("SELECT * FROM my_items WHERE id=%d", ★12行目★ mysql_real_escape_string($id) ); $recordSet=mysql_query($sql); $data = mysql_fetch_assoc($recordSet); ?> <p>変更する内容を記入してください</p> <form id="frmUpdate" name="frmUpdate" method="post" action="update_do.php"> <dl> <dt> <label for="maker_id">メーカーID</label> </dt> <dd> <input name="maker_id" type="text" id="maker_id" size="10" maxlength="10" value="<?php print(htmlspecialchars($data['maker_id'], ENT_QUOTES)); ?>" /> </dd> <dt> <label for="item_name">商品名</label> </dt> <dd> <input name="item_name" type="text" id="item_name" size="35" maxlength="255" value="<?php print(htmlspecialchars($data['item_name'], ENT_QUOTES)); ?>" /> </dd> <dt> <label for="price">価格</label> </dt> <dd> <input name="price" type="text" id="price" size="10" maxlength="10" value="<?php print(htmlspecialchars($data['price'], ENT_QUOTES)); ?>" /> </dd> <dt> <label for="keyword">キーワード</label> </dt> <dd> <input name="keyword" type="text" id="keyword" size="50" maxlength="255" value="<?php print(htmlspecialchars($data['keyword'], ENT_QUOTES)); ?>" /> </dd> </dl> <input type="submit" value="変更する" /> <input type="hidden" name="id" value="<?php print(htmlspecialchars($data['id'], ENT_QUOTES)) ?>" /> <form > </body> </html>

    • ベストアンサー
    • PHP
  • スタイルシートのみで表の作成

    よくある、「サービスにログインするときのパスワード、ID入力画面」というものを作ってます。 パスワード、テキストフィールド ID、テキストフィールド ログインボタン のような。 たとえば簡単にテーブルで組みますと、 <table width="400" border="0" cellspacing="0" cellpadding="2"> <tr> <td width="100">パスワード</td> <td><label> <input type="text" name="textfield" /> </label></td> </tr> <tr> <td>ID</td> <td><input type="text" name="textfield2" /></td> </tr> <tr> <td colspan="2" align="center"><label> <input type="submit" name="Submit" value="ログイン" /> </label></td> </tr> </table> 似たり寄ったりこんな感じだとします。 これと同等のものを、スタイルシートだけで作成できますか? たとえば、ソースは、 <dl id="LOGIN-FORM"> <dt class="loginFormLabel" id="USER-NAME-LABEL"> <label for="USER-NAME">ユーザ名</label> <input type="text" name="username" size="24" value="" id="USER-NAME" class="inputText" /> </dt> <dt class="loginFormLabel" id="USER-PASSWORD-LABEL"> <label for="USER-PASSWORD">パスワード</label> <input type="password" name="password" size="24" value="" onmousedown="" onkeydown="if (event.keyCode == 13) {enter.click();return false;}" id="USER-PASSWORD" class="inputText" /> </dt> <dt class="loginFormLabel" id="USER-INFO-SUBMIT-LABEL"> <label for="USER-INFO-SUBMIT">アクション</label> </dt> <dd class="loginFormText" id="USER-INFO-SUBMIT-TEXT"> <input type="submit" value="ログイン" id="USER-INFO-SUBMIT" class="submit" /> </dd> </dl> です。 テキストフィールドの頭をそろえたり、ログインボタンの位置を 変えたりしたいです。 テーブルでやればいいのに・・・と思いますが、 スタイルシートで頼むといわれて、困ってます。 教えてください。

専門家に質問してみよう