【PHP】SQLSTATE[08P01]: <>: 7 ERROR: bind message supplies XX parameters, but prepared statement "pdo_stmt_00000001" requires XX
PHPで、クエリで更新しようとしていたところ、
以下のエラーが出ました。
SQLSTATE[08P01]: <>: 7 ERROR: bind message supplies 88 parameters, but prepared statement "pdo_stmt_00000001" requires 89
どういうこと?
Google翻訳してみると、こういうことみたいです。
SQLSTATE [08P01]:<>:7エラー:バインドメッセージは88個のパラメーターを提供しますが、プリペアドステートメント「pdo_stmt_00000001」には89個が必要です
-
原因:
→バインドの数が足りなかった。(まあ自明)
-
対策:
→上記を修正。
- 参考:
プログラミング初心者向け「プリペアドステートメントとプレースホルダとクエリー」まとめ
https://webukatu.com/wordpress/blog/1638/
PDO prepare プリペアドステートメントの使い方
https://bituse.info/php/35#:~:text=%E3%83%97%E3%83%AA%E3%83%9A%E3%82%A2%E3%83%89%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%A1%E3%83%B3%E3%83%88%E3%81%A8%E3%81%AF%E3%80%81SQL,%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82
【HTML】【CSS】本日の覚書(テーブルなど)
🐤テーブルを作るときに参考にしたサイト
・【HTML table】表を作成する基本からレイアウトの方法までを解説
https://www.sejuku.net/blog/49377
・HTMLのtableでテーブルを作る方法と応用テクニックを解説
https://webliker.info/02035/
・table要素で作成したテーブルをCSSでデザインする
https://shu-sait.com/css-table-design/#outline__2_1
🐤見出しと横並びにしたい。
・【CSS】見出しの横に「更新日」とか並べて表示したい時の簡単なCSSの書き方
http://bashalog.c-brains.jp/09/03/09-210351.php
【CSS】セレクタについて。
CSSで使われる「#」「>」「$」などの意味とは?
(この☟ブログをまるまる引用しますが、自分用に見やすいように…
https://kredo.jp/media/css-symbol-meaning/)
🐤「,」(カンマ)
→複数の要素を指定する際に利用するセレクタ。
複数の要素にスタイルを適用したいときに使う。
/*-----なんかこんな感じで-----*/
th,td{
border: 1px solid gray;
background:#dcdcdc;
}
🐤「.」(ドット)
→指定したclass名の要素にスタイルを適用するクラスセレクタ
/*-----↓これCSS-----*/
.あああ{font-weight:bold;}
<!--↓これHTML-->
<label class="あああ">とりのたまご</label>
🐤「#」
→指定したid名の要素にスタイルを適用するIDセレクタ
/*-----↓これCSS-----*/
.あああ{font-weight:bold;}
<!--↓これHTML-->
<label class="あああ">ひよこ</label>
🐤「*」
→すべての要素にスタイルを適用する全称セレクタ
/*-----↓これCSS-----*/
*{color: #2196F3;}
<!--↓これHTML-->
<label class="あああ">とりのたまご</label>
<label class="あああ">ひよこ</label>
→適用する要素の範囲を指定できる。
/*-----↓これCSS-----*/
div *{color: #2196F3;}
<!--↓これHTML-->
<label class="あああ">とりのたまご</label>
<div>
<label class="あああ">ひよこ</label>
</div>
🐤「>」
→指定した要素の直下にある要素にスタイルを適用する
子要素にのみスタイルを適用する
🐤「+」
→指定した要素に隣接する要素にスタイルを適用する
「>」と似ていますが、子要素ではなく「隣接する要素」にのみ適用
🐤「~」
→指定した要素の後にある要素全てに適用する
「+」よりも適用される範囲が広い
🐤「$」
→要素ではなく属性を指定する際に使用する
【エラーへの対処】PDOException: SQLSTATE[HY093]: Invalid parameter number: :
🐤原因:
今回の場合…SQL実行するときに、バインドする:バインド名
ここに、日本語を書いていたからでした。。
英文字にしたら、直ったよ。
🐤エラーが起こったソースコード:
// SQL作成
$query[] = 'select';
$query[] = ' 社員番号';
$query[] = ' 社員名';
$query[] = ' from';
$query[] = ' 社員マスタ';
$query[] = ' where';
$query[] = ' 社員番号 = :社員番号';
// パラメータセット
$param = NULL;
$param[] = new \DBBind(':社員番号', 99999, \DataType::Integer);★★★
// SQL実行
$records = $this->common->db-> execute($query,$param);
return $records;
↓
例外が発生しました
PDOException: SQLSTATE[HY093]: Invalid parameter number: :
(+_+)
🐤対処:
(誤)
$param[] = new \DBBind(':社員番号', 99999, \DataType::Integer);
↓
(正)
$param[] = new \DBBind(':employeeNumber', 99999, \DataType::Integer);
※
【PHP】違うクラスにある関数を呼び出したい。
メソッドの内部から、違うクラス内にあるメソッドを呼び出したかったんです…。
疑似変数「$this」を使って…。
getPiyoDataModel.phpの中にある”createPiyoData()”という関数を使いたい。
ちなみに、今回のパスは以下のような感じになっています。
//クラス参照
$this->getPiyoCls = new \piyo\getPiyoData\getPiyoDataModel($this->common);
// 使用例
$array_piyo = [];
$array_piyo= array_merge($array_piyo, $this->getPiyoCls->createPiyoData());
🐤ポイント
・$this->○○ = new パス… で定義。
・$this->○○->関数 で使える。
※その関数やが、(createPiyoData)、外部からのアクセス可能にしておかなければならない
privateじゃなくてpublicだよん。
🐤そもそも…
①パスの書き方
②$this(擬似変数)ってなんや
【php】$thisとかnewとかなんだそれ!な人向けメモ
https://ameblo.jp/siroikinoko/entry-11068078026.html
③相対パス、絶対パス…
・【初心者向け】絶対パスと相対パスの違いについて解説
https://proengineer.internous.co.jp/content/columnfeature/5229
・パスの説明(絶対パス、相対パス、UNC、URL)
https://desktop.arcgis.com/ja/arcmap/10.3/tools/supplement/pathnames-explained-absolute-relative-unc-and-url.htm#:~:text=Windows%20%E3%81%AE%E8%A1%A8%E8%A8%98%E8%A6%8F%E5%89%87%E3%81%A7%E3%81%AF,%E6%B3%95%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82
④名前空間
・名前空間の概要
https://www.php.net/manual/ja/language.namespaces.rationale.php
・名前空間の使用法: 基本編
https://www.php.net/manual/ja/language.namespaces.basics.php
・(その他名前空間についてのPHPリファレンスhttps://www.php.net/manual/ja/language.namespaces.php)
・【PHP超入門】名前空間(namespace・use)について
https://qiita.com/7968/items/1e5c61128fa495358c1f
🐤今後の課題…
外部ファイルの読み込み方には以下があったりする
・require
・require_once
・include
・include_once
・autoload
→これは今回の記事とはあんまし?関係ない?よね?
でもまあ一応…
参考:https://qiita.com/nogson/items/db15d6e35433154fce8e