WebEngine

だらだらと綴る技術系メモ

MySQL

内部結合と外部結合[SQL]

前提 環境:MySQLを使います(mysql Ver 14.14 Distrib 5.7.18) 結合とは 結合とは、複数のテーブルを特定のキーで結びつけて処理することです。 DBを使ったシステムやアプリケーションの多くは、1つのテーブルだけで実装されていることは少なく、 何枚かの…

PDOのfetch系メソッド

前提 PHP 5.6 mysql Ver 14.14 Distrib 5.7.18 Google Chromeでしかテストしていません PDOのfetch系メソッドをまとめただけです テストデータを用意 ※ fetch系メソッドだけ調べたい方は下の方まで飛ばしてください ターミナルでMySQLを起動。それから以下の…

パスワードをデータベースに保存するときは、一緒に塩を入れよう

セキュアに保存する -> 漏れた場合を想定する データベース(以下DB)にパスワードを保存するとき、そのまま (平文で)保存してはいけません。データが漏れた場合に、パスワードが 見た瞬間わかってしまうからです。 パスワードを保存する場合、暗号化してからD…

Vagrant + Ubuntu14.04 でLAMP環境構築

追記(2017.1.7) 久々に見直したところ、step.5の工程が必要ないことに気づきました。必要ない方は飛ばしてもらって結構です。 Step.0 前提条件 VirtualBoxインストール済み Vagrantインストール済み WindowsならばPuTTY or TeraTermインストール済み Step.1 …

SQLインジェクション対策の一歩としてプレースホルダを利用する

そもそもSQLインジェクションとは? 悪意を持ったユーザが入力フォームなどにSQLを打ち込んで、不正に データベース(以下DB)にアクセスすること。XSS(クロスサイトスクリプティング)に次いで 有名な攻撃手法とも言われます。 この攻撃を受けると・・・ D…

MySQLで大容量のデータを挿入する前に

MySQLに大容量の画像を挿入する前に確認したいこと ちょっとした画像アップローダをPHP+MySQLで実装したのですが、下記のようなエラー を吐きました。 Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC o…