PDOオブジェクト データベースに接続するためのオブジェクトであり、query関数を使うことでクエリを実行し、PDO Statementオブジェクトを取得できる。 プレースホルダーを使用したクエリを実行するには、PDOオブジェクトを使用してPDOStatementオブジェクトを取得し、その後、それを使用してクエリを実行する。 以下例 PDO Statementオブジェクト PHPからSQLを実行す…Continue reading SQLの実行 PDOオブジェクト、PDO Statementオブジェクト
タグ: sql
SQL nullと文字列の比較
nullとの比較 SQLであるカラムと文字列を比較したとき、そのカラムがNullだと条件に当てはまらなくなる。 以上のような場合、CLMがNullだと当てはまらないのは当然だが、 以下はどうだろう? ‘a’ という文字列以外のなので、CLMがNullの行も取得できそうな気がする。 しかし、取得できない。 CLMがNullの場合、比較されないので、行は取得できない。 ISNU…Continue reading SQL nullと文字列の比較
SQL Server 複数の値をバインドするとき
PDOException: SQLSTATE[IMSSP]: Tried to bind parameter number 65536. SQL Server supports a maximum of 2100 parameters 何もせずにただbindValueを使って実行すると上記のエラーが出たり、訳が分からなかった。 解決方法 SQL serverにてプレースホルダー(名前付きバインドパ…Continue reading SQL Server 複数の値をバインドするとき
SQL Server サブクエリを使ったInsert
カラムの数は合わせる必要がある。 テーブル作成時にInsert 番号を順番に振ってアップデート すでにあるテーブルのデータのとあるカラムに上から順番に番号を振りたいとき まず順番に番号を振ったテーブルを作る このとき、アップデートしたいテーブルの何か一意のデータが必要。 方法はいろいろあるが、numberカラムにidentityをつける。 テーブルを右クリック、IDENTITY設定を「はい」にする…Continue reading SQL Server サブクエリを使ったInsert
SQLでの日付比較での注意点 うまく条件分岐できない、データが取れない
カラムの型を確認する SQLで日付比較をするときカラムがDate型でも、’2023/01/01’ というような文字列で渡していないだろうか? となるようなSQLだとうまく条件に当てはまらない日付がでることもある。 ほとんどのDBでは、カラムに対して、値が自動的に型変換される。 この場合、渡した’2023/01/01’が日付型に変換されるだろう。 0が…Continue reading SQLでの日付比較での注意点 うまく条件分岐できない、データが取れない
wordpress ドメイン移行 簡単な方法 mixhostにて
ドメインを変更するとき 新規ドメインにてwordpressをインストールする オリジナルのテーマを自分で作成していたので、テーマファイルはもともとある。 ない場合は、テーマファイルをコピーすればいい。 wp-content/themes/テーマフォルダ 移行先にてテーマをインストール これは、テーマフォルダを同じところにおけばいい。 記事やタグはエクスポートして、インポート データベースの内容をエ…Continue reading wordpress ドメイン移行 簡単な方法 mixhostにて
sql 他のテーブルを参照したいとき テーブル結合するか、しないか
sqlでの条件指定や、updateなどで、他のテーブルを参照したいとき、 書き方としては2つある。 ・テーブルを JOINさせる方法 SELECT * テーブルA INNER JOIN テーブルB ON テーブルA.カラムC = テーブルB.カラムD WHERE テーブルB.カラムE= 値 このSQLの内容としては、 WHERE: この条件に当てはまるカラムを選択。 INNNER JOIN: テ…Continue reading sql 他のテーブルを参照したいとき テーブル結合するか、しないか
An error occurred substituting the named parameters ; Mixed named and positional parameters in エラーが出た時
An error occurred substituting the named parameters PHPでSQL文を実行したときに、以上のようなエラーが出た。 こちらは、翻訳すると 名前付きパラメーターの置換中にエラーが発生しました とのこと。 Mixed named and positional parameters これも、パラメータの場所と名前が混在している。 みたいな感じ。 つまり、…Continue reading An error occurred substituting the named parameters ; Mixed named and positional parameters in エラーが出た時
データバインド bindValue bindParam
bindParam(param, var, type) 変数は、参照としてバインドされ、execute()が呼ばれた場合のみ、変換される。 param: ‘:name’ のように、プレースホルダーを記述 var: sqlステートメントにバインドする変数 type: PDO::PARAM_STR など、STRの部分は変数の型がはいる bindValue(p…Continue reading データバインド bindValue bindParam
SQLインジェクション防止 PHPのプレースホルダー プリペアードステートメント
SQL文を打つとき、 SQL文のどこかに、入力値を変数として、入れているなら、 例えば、post送信で、テーブル名を取得している場合など、 $table-name = $_POST[$table]; $sql = “SELECT * FROM $table-name”; 入力値に、予期せぬSQL文などが入った場合、それが実行され、 最悪の場合、カラムやテーブルのデータが消え…Continue reading SQLインジェクション防止 PHPのプレースホルダー プリペアードステートメント