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で質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データ送信をボタンを押さずに...
-
form actionで二つ送信先を指定...
-
FORMで送信ボタンと戻るボタン...
-
ジャンプ先アドレスの最後に?...
-
phpについて
-
問題部分がJavascriptかPHPか分...
-
戻れないです
-
セッション PHPとHTML
-
リンクでキーワードを渡すには...
-
テキストボックスにデータベー...
-
Auth認証エラー
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
PHPのif文でその処理を途中で抜...
-
透過PNGが透過されない!!
-
PHPで新しいウインドウで開く命...
-
.phpと.incファイルの違いはな...
-
バッチを用いたフォルダの自動移動
-
copy() で属性保存
-
<A href ~ と一緒に値を渡すには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
form actionで二つ送信先を指定...
-
データ送信をボタンを押さずに...
-
ボタンのクリック数を合計保存...
-
テキストボックスにデータベー...
-
FORMで送信ボタンと戻るボタン...
-
PHPとCSVで簡易データベースな...
-
PHP table内、<a href使って su...
-
header.locationで、画面遷移、GET
-
【WordPress】投稿がないカテゴ...
-
header(Location: next.php) だ...
-
別のファイルへ値を受け渡す方法
-
値が渡されない
-
ワンクリックしかできないクリ...
-
inputタグでphpを呼び出す際、...
-
【PHP】ページを更新すると勝手...
-
リクエストメソッド
-
条件を満たしたら、別のページ...
-
受け取ったパラメータを次のphp...
-
PEAR Image_QRCodeのエラー
-
GETメソッドで文字列として+を...
おすすめ情報