
phpを使い、開発を行っています。
ある画面から値を選択し、POSTを使用して、別の画面に遷移させ、プリペアドステートメントにてDB(MySQL)からデータを取得するコードを記載していたのですが、下記エラーが出力されてしまいます。
「PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in 」
下記にソースを記載しておりますが、bindValueの定義等、誤ってないと思うのですが。。。
どなたか、解決策をご教示頂けないでしょうか。
送信側のソース
<?php
function showOption($start, $end, $step = 1) {
for ($i = $start; $i <= $end; $i += $step) {
print('<option value="'.$i.'">'.$i.'</option>');
}
}
<form method="POST" action="AAA.php">
<div id="container">
<select id="rdate_year" name="rdate_year">
<?php showOption(2013, 2020); ?>
</select>
<label for="rdate_year">年</label>
<select id="rdate_month" name="rdate_month">
<?php showOption(1, 12); ?>
</select>
<label for="rdate_month">月</label>
<select id="rdate_day" name="rdate_day">
<?php showOption(1, 31); ?>
</select>
<label for="rdate_day">日</label>
</div>
<input type="submit" value="検索" />
</p>
</form>
AAA.php
<?php
$db = new PDO('mysql:host=localhost; dbname=php10; charset=utf8', 'ユーザー', 'パスワード');
$sqla = "SELECT * FROM AAAAAA WHERE rdateyear = :rdata_year AND rdatemonth = :rdate_month AND rdateday = :rdate_day";
$stt = $db->prepare($sqla);
$stt->bindValue(':rdate_year', $_POST['rdate_year']);
$stt->bindValue(':rdate_month', $_POST['rdate_month']);
$stt->bindValue(':rdate_day', $_POST['rdate_day']);
$stt->execute();
while ($row = $stt->fetch()) {
print($row['rdate_year']);
}?>
よろしくお願いしますm(_ _)m
No.1ベストアンサー
- 回答日時:
>誤ってないと思うのですが。
。。そう思って見直すと見落とします(汗
>$sqla = "SELECT * FROM AAAAAA WHERE rdateyear = :rdata_year
>AND rdatemonth = :rdate_month AND rdateday = :rdate_day";
rdateyearのプレースホルダが、::rdata_yearになっています(bindValueでは':rdate_year')。
shimixさん
ご回答ありがとうございます。
誤りを修正し、無事にphpが実行できました。
(rdataに気づかず、恥ずかしい限りです)
ありがとうございましたm(_ _)m
No.4
- 回答日時:
shimixさんの回答で事足りてると思いますが、スルーされた部分を補足的に回答(汗
ArwinさんはbindValueのマニュアルをまず…
http://php.net/manual/ja/pdostatement.bindvalue. …
bindValue・bindParamともにコロンは必要で、エスケープは自動的にこのメソッドによって行われるため不要。
No.2
- 回答日時:
phpはよく知りませんが、まあ、エラーメッセージに書いてありますよね。
そんなパラメータ名知らねえぞって。
bindvalue(':param_name', values);
コロンは、SQL文側での変数宣言する意味合いでしょうから、bindvalueの引数にはいらないと思いますよ。
あと、ちなみにですが、Formからポストされた値そのままぶち込むのはどうかと思いますし、dbとのコネクションもロジックの中に直書きして大丈夫ですか?
自分の趣味で作ってるものであればいいですが、私がマネージャーだと怒りますよ。
派遣だったりクビにします。
Arwinさん
ご回答ありがとうございます。
また、ご指摘ありがとうございます。
最近、プログラミングを始めたばかりでして、恥ずかしい限りでございます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ワンクリックしかできないクリ...
-
PHPのif文でその処理を途中で抜...
-
3の倍数の和
-
リンク先を隠す方法はないでし...
-
Visual C++ 2005 Express Editi...
-
FTPコマンドでディレクトリごと...
-
PHP8を使うと、大量のWarningが...
-
PHPを使ってのサーバ上ファイル...
-
PythonのTkinter詳しい方へ。画...
-
makefile でファイルをコピーす...
-
HYのAM11:00のラップの部分の歌...
-
「include()」関数の使い方につ...
-
onedrive にexcelファイルをア...
-
Subversionのリポジトリの削除
-
BASP21のFTPで日本語ファイル名...
-
tex についての質問です。 割り...
-
URLが.PHPってどういう...
-
ファイルアップロードに関して...
-
ヒアドキュメントの中で演算子...
-
日付と年月日を選択するコード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【PHP】ページを更新すると勝手...
-
FORMで送信ボタンと戻るボタン...
-
ボタンのクリック数を合計保存...
-
データ送信をボタンを押さずに...
-
inputタグでphpを呼び出す際、...
-
PHP table内、<a href使って su...
-
テキストボックスにデータベー...
-
form actionで二つ送信先を指定...
-
frame間の値の受け渡し方法
-
xamppでformによるデータの送信...
-
PHP検索結果を別ページに還移さ...
-
header.locationで、画面遷移、GET
-
続々 入力・確認・登録に関して
-
MySQLの似たような命令を ルー...
-
phpについて
-
セッション PHPとHTML
-
値が渡されない
-
変数について
-
【初歩】ログアウトを【2回押さ...
-
PHPのif文でその処理を途中で抜...
おすすめ情報