【mysql】 カラムに文字列を追記する方法

すでに内容のあるカラムに文字列を追記するには、「concat」を使う。
以下のとおり。

UPDATE テーブル名 SET 追加先のカラム = concat(追加先のカラム, '追加したい文字列');

ちなみに、追加先のカラムが「null」の状態だと追記されません。

【PHP】サブドメインに親ドメインのセッション情報を引き継ぐには

親ドメインのセッション情報が、サブドメインに引き継がれないのは、クッキーの有効範囲にサブドメインが含まれていないため。(IEだとOKなのに、safariやfirefoxだとNGになるものこのケースが当てはまる)

サブドメインにもセッション情報を引き続きたい場合は、一番最初にクッキーを作る段階で「サブドメインにも有効なクッキー」を作る必要がある。

やり方は、クッキーが作られるドメインのphp.iniに次の記述をすればいい。

session.cookie_domain = ".example.com"

この記述があるphp.iniファイルのドメイン下で作られたクッキーは、すべてのサブドメインでも有効になる。ドメイン先頭のドット「.」を忘れないように。

あと、動作確認をするときは、必ずクッキーをクリアしてから行うこと。ログアウト→再ログインとかでは不十分。

【UWSC】IEを自動で更新するスクリプト

UWSCを使って、IEを自動で更新させたいなら次のように記述すれば良い

IE = GETACTIVEOLEOBJ("InternetExplorer.Application","yahoo")
IE.Refresh //更新 F5を押したときと一緒

もしくは

IE.document.location.replace(IE.document.location.href)//今開いているページのURLに再アクセス

更新をするとページによっては

「情報を再び送信しますが更新してよろしいですか?」

的なダイアログが出るときがある。これは「F5 更新」の場合に出現する可能性が高いので、回避したいなら

IE.document.location.replace(IE.document.location.href)

こっちを試すと良い

【mysql】複数のテーブルのデータをinsertで一つのテーブルにまとめる

複数のテーブルのデータを一つのテーブルにinsertで追加、まとめるsql

INSERT INTO table_name (column1,column2) SELECT column1,column2 from table_name2;

データが追加される側のカラムとデータを参照するカラムの構造は同じにしてください。

【mysql】すでにあるカラムにユニークキーやプライマルキーを追加する方法

すでにあるカラムにユニークキーやプライマルキーを追加するには次のSQL文を実行すればいい。

プライマルキーなら、

mysql> ALTER TABLE テーブル名 ADD PRIMARY KEY (カラム名);

ユニークキーなら、
mysql> ALTER TABLE テーブル名 ADD UNIQUE (カラム名);

もし、

ERROR 1170 (42000): BLOB/TEXT column 'text_field' used in key specification without a key length

のようなエラーが出たら、キーの長さを指定する必要があるので、

プライマルキーなら、

mysql> ALTER TABLE テーブル名 ADD PRIMARY KEY (カラム名(255以下のキーの長さ));

ユニークキーなら、
mysql> ALTER TABLE テーブル名 ADD UNIQUE (カラム名(255以下のキーの長さ));

こう記述するとエラーにならないはず。

しかし カラムが utf8mb4(一文字4バイト) の物に対してキーの長さを 255 にするとエラーが出る。

Specified key was too long; max key length is 767 bytes
(索引のキーが長すぎます。最大 767 バイトまでです。)

この場合、キー長さを 191 以下に下げればいい。

ALTER TABLE テーブル名 ADD PRIMARY KEY (カラム名(191));

4byte × 191 = 764byte

767byte 以内に収まる。

【PHP】strposで検索文字に配列を使うための自作関数

自作関数名は strpos_array

strposと同じように使える。検索文字が配列であっても、なくても利用できる。

function strpos_array($haystack, $needles) {
if ( is_array($needles) ) {
foreach ($needles as $str) {
if ( is_array($str) ) {
$pos = strpos_array($haystack, $str);
} else {
$pos = strpos($haystack, $str);
}
if ($pos !== FALSE) {
return $pos;
} else {
return FALSE;
}
}
} else {
return strpos($haystack, $needles);
}
}

【mysql】3つのテーブルを結合する時の記述

mysqlで3つのテーブルをリレーションしたいときは次のように書く

SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id INNER JOIN table3 ON table1.id = table3.id;

条件で絞りたいなら最後にWHEREをつける

SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id INNER JOIN table3 ON table1.id = table3.id WHERE ~~;

[uwsc]一秒おきにクリックを繰り返す

While True
BTN(LEFT,CLICK)
Sleep(1) // 1秒の間を取る
Wend

ちなみに強制終了は ALT + F2

[mysql]フィールドのデータがNULLの最小のプライマリキー(id番号)を出力

最大値が欲しければminをmaxに変える。

さくらのphp.ini設定場所は2箇所(独自ドメインのphp.iniについて)

さくらインターネットのphp.iniファイルの設定場所は2箇所ある

ひとつはサーバーコントロールパネルへログインして「PHP設定の編集」で変更。

しかし独自ドメインを設定している場合、ここで変更しても反映されない。

phpinfoで確認しても、php.iniファイルを読み込むパス情報の

「Loaded Configuration File」には (none) と表示される。これは読み込みされる場所にphp.iniファイルが存在しないということ。

ではどうすればいいのかという、独自ドメインのルートフォルダに直接php.iniファイルを書き込んで転送すればいい。その後phpinfoで「Loaded Configuration File」を確認すれば読み込みできていることがわかる。

ちなみに、自分の場合はinclude_pathの設定をしようと上記の解決策を見つけるまではまったのだが、.htaccessでinclude_pathを変更してもエラーが出てできなかった。

サーバーコントロールパネル内「PHP設定の編集」に次の記載がある。

//////////////////////////////////////////////
.htaccess に PHP_Flag や PHP_Value を指定せず、php.ini に設定してください。htaccess に記述した場合、Internal Server Error になります。
//////////////////////////////////////////////

さくらサーバーでinclude_pathを変更するには、php.iniを変更するのが正しい。

28 / 30« 先頭...1020...2627282930