ど素人から毛を生やす。<延>

Web

[MySQL]該当レコード群の最新1件のみをUPDATE

どもです。毎度の備忘的記事。

WHERE指定した条件でUPDATEを行いたいけれど、更新対象はその条件の最新1レコードのみにしたい。
という場合、連番のIDや更新日時など、どのレコードが最新なのか判断基準になるカラムがあれば、簡単に可能という話。

UPDATE [対象テーブル] 
... 全文を読む »

入力・選択した内容を同一フォーム内の別inputに転写する。

どもです。
とてもシンプルな話なのですが、地味な汎用性に感動を覚えたので備忘的メモ。

onblur = "this.form.転写先inputのname.value 
... 全文を読む »

文字列をUTF-8に変換、UTF-8BOMだったらBOMを取る。

某所からDLしたTSVファイルがさあ!
SJISだったりUTF-8だったりUTF-8BOMだったりころっころ文字セット変えてくるのよ! 断りなく!!

ということで、文字セットを判別してUTF-8に変換、UTF-8BOMだったらBOMを取るだけの関数備忘録。

function 
... 全文を読む »

長大な文字列でpreg_match()したらマッチするはずなのにマッチしない場合、backtrack_limitに抵触している可能性がある話。

どもです。

件名の通り、数MBの文字列をpreg_match()するというトンデモ行為をせにゃならず。
その結果、マッチするはずなのに「0」をreturnされてしまいました。

この原因が「バックトラックリミット」でした。という話です。

バックトラックリミットとは?

... 全文を読む »

[MySQL]頭文字で GROUP BY して COUNT

どもです。
やりたかったことは件名の通りなのですが、ググってもなかなか出てこなかったので備忘録的に記録しておくことにします。

SELECT SUBSTRING([対象カラム], 1, 
... 全文を読む »

[PHP]受信したメールがMIMEエンコードされている場合。

前回、メール件名の文字列がMIMEエンコードされていた場合の対応を考えたわけですが、じゃあメール本文についてはどうするのが最適解よ??となるわけです。

MIMEヘッダの文字列には「=?utf-8?Q?」のように文字セットやエンコード方式が含まれているため正確に判定してデコードできますが、通常はそういった情報が含まれないので…、取り敢えず文字列から検出してみましょうか。

var_dump(mb_detect_encoding('=3D=E3=81=A9=E7=B4=A0=E4=BA=BA'));
	//string(5) 
... 全文を読む »

[PHP]受信したメールの件名が文字化けしている場合。

どもです。
PHPにて、自身のサーバからメールを取り込んでなんやかんやする旧いシステムの改修を行っていました。

すると、届いたメールの本文が文字化けしておりました。

ど4Rotoから毛を生やす(*´▽`*)
... 全文を読む »

条件によって条件式を変えたかった話。

どもです。

条件によって条件式が変わるが、trueのときに通る処理は同じものとしたい。

無名関数を使えばできるのかな?
と思ったが、できなかった。

//失敗例
... 全文を読む »

ifで分岐させる二つの処理が9割共通する場合

どもです。

ifで分岐させる二つの処理の9割が共通する、ということであれば、

if(☆☆){
	//共通処理
	//☆☆専用の処理
... 全文を読む »

PDOで大量のデータをSELECTしたらメモリリークになったので、非バッファモードで実行する。

どもです。

PHP7時代のMySQL利用といえばPDOですが、PDOを用いて大量のデータを取得しようとしたところ、メモリリークが発生しました。

PHP Fatal error:
... 全文を読む »

[MySQL]レコードが存在するテーブルを抽出

どもです。

テーブルがたくさんあるけど、使われていないテーブルもたくさんあるDBで、使われている=レコードが存在するテーブルのみ抽出したかった。

参考:
[Qiita]MySQLで全テーブルのレコード数を一覧表示する

これWHEREに追記したらレコードが存在するテーブルだけ抽出できそうですね。... 全文を読む »

jsのalert()に一律で音を追加する。

どもです。
次に必要になったときに忘れてそうなので、備忘しておきます。

参考:
[Qiita]既存の関数の呼び出しをフックする方法
[Syncer]クリックすると音が鳴るボタンの作り方... 全文を読む »

MySQLの実行順に関するぼやき。

某解説サイトにSQLの実行順
①FROM
②WHERE
③GROUP BY... 全文を読む »

MySQL-PHP-HTML の文字列保存・表示備忘録

どもです。
textareaやinputで自由入力できるようにすると、クォーテーションや特定のhtmlタグを入れたときに、処理や表示がバグったり、クロスサイトスクリプティングの被害に遭ったりします。
回避のための処理をいちいち調べるのも面倒なので、備忘的にまとめておくことにします。

PHP←→MySQL

//PHP→MySQL
... 全文を読む »

MySQLは比較法を変更しないと大文字小文字を区別しない話

どもです。

一般的なプログラム言語では、アルファベットの大文字小文字は別の文字として扱われます。

が、MySQLでは同じ文字として扱われます。
そういえば僕も可読性が上がるので、普段から「select」でなく「SELECT」といった書き方をしています。

さて、今回はこの仕様をすっかり忘れていたおかげで嵌ってしまった話です。... 全文を読む »

MySQLの行の並びってキーの昇順だったのか。

どもです。

重複不可のコードの羅列が欲しかったので、プライマリキーのみのMySQLテーブルを作りました。

すると、特に登録時にソートをした覚えがないのに、テーブルの中の値がキーの昇順で入っているようです。
ORDER BY ... 全文を読む »

wkhtmltopdf で下に余白ができた話。

どもです。

wkhtmltopdf を使用した既存のPDF出力サービスの改修。
これまでA5横で出力していた2種類のPDFを、A4縦の1枚にまとめてPDFする機能の追加です。

下にかなりの余白ができている…... 全文を読む »

errors in crontab file, can't install. エラーは bad のところを確認

どもです。

cron を新規登録しようと思ったのですが、:wq すると今まで見たことのない

crontab:
... 全文を読む »

jsで「入力値がある場合」をチェックするならnullくらいは考慮しよう

どもです。

例えばセレクタを書き間違えるなどで指定の要素が存在しなかった場合、undefinedが返されます。

プルダウンの選択状態が解除されてしまった場合、valはnullになります。

そんな感じでjsで「入力値がある場合」をチェックしようとすると、undefinedやnullが来る可能性を考慮しなければなりません。
いやundefinedは正しく動いているなら来ない可能性が高いですが、nullくらいは考慮しておきましょう。... 全文を読む »

PHPとjsで浮動小数点誤差問題と闘う

どもです。

ウェブシステム上でお金の計算をしたい。
となれば、厳密な数値を算出する必要があります。

が、一般的にコンピュータ計算では浮動小数点による小数計算誤差問題... 全文を読む »