言語系

addslashes() による SQL 文字列のエスケープ
2014-03-10

 【問題】
MysqlのDBインサート時、次のエラーが発生しました。

DBエラー: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2014年3月号')' at line 1]
INSERT INTO `os_rss_item` (channelId,url,title,link,description)
VALUES (1137,'http://www.town.kiyosato.hokkaido.jp/rss/feed.rss','2014年3月号|広報きよさと|北海道清里町','http://www.town.kiyosato.hokkaido.jp/koho/2014/3.html','広報きよさと'2014年3月号')

【原因】
カラムdescriptionの値にシングルクォート(')が混じっていました。

【対応】
addslashes() 使用
 

go言語をcentosにinstall
2014-04-13

 【コマンド:】
yum -y install go

【実行例:】

[root@opensuccess99 ~]# yum -y install go
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
epel/metalink                                                                                    | 4.9 kB     00:00
 * base: www.ftp.ne.jp
 * epel: ftp.riken.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
adobe-linux-x86_64                                                                               |  951 B     00:00
base                                                                                             | 3.7 kB     00:00
extras                                                                                           | 3.4 kB     00:00
google-chrome                                                                                    |  951 B     00:00
updates                                                                                          | 3.4 kB     00:00
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package golang.x86_64 0:1.2.1-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
 Package                    Arch                       Version                           Repository                Size
========================================================================================================================
Installing:
 golang                     x86_64                     1.2.1-1.el6                       epel                      23 M

Transaction Summary
========================================================================================================================
Install       1 Package(s)

Total download size: 23 M
Installed size: 107 M
Downloading Packages:
golang-1.2.1-1.el6.x86_64.rpm                                                                    |  23 MB     00:06
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : golang-1.2.1-1.el6.x86_64                                                                            1/1
  Verifying  : golang-1.2.1-1.el6.x86_64                                                                            1/1

Installed:
  golang.x86_64 0:1.2.1-1.el6

Complete!
 

$GOPATH not setの対応方法
2014-04-13

【事象】
centosにgo言語をインストールしましたが、go get github.com/xxxxを実行したら、
「$GOPATH not set. For more details see: go help gopath」をエラーが出ました。

指示通り、go help gopathコマンドを発行
次のようなメッセージが表示されましたが、ようするに環境変数GOPATHを定義しなさいと
。。。

Here's an example directory layout:
    GOPATH=/home/user/gocode
    /home/user/gocode/
        src/
            foo/
                bar/               (go code in package bar)
                    x.go
                quux/              (go code in package main)
                    y.go
        bin/
            quux                   (installed command)
        pkg/
            linux_amd64/
                foo/
                    bar.a          (installed package object)

【環境変数の追加】
/etc/profileの一番後ろに
export GOPATH=/home/user/gocode
を追加するだけ

[root@opensuccess99 Heartbleed]# vi /etc/profile
...
export GOPATH=/home/user/gocode

【sourceコマンドで設定を反映させる】
[root@opensuccess99 Heartbleed]# source /etc/profile
 
【環境変数追加されたことを確認】
[root@opensuccess99 Heartbleed]# env|grep GOPATH
GOPATH=/home/user/gocode
 

【Uncaught SyntaxError: Unexpected reserved word 】
2014-04-14

 【事象】
javascript実行時、次のエラーがでました。
Uncaught SyntaxError: Unexpected reserved word
【原因】
javascriptの予約語が使用されているため、文法的エラーとみなされました。
しらべたら、自分のjavascriptの中でclassという予約語を変数として使っています。
なるほど。。。

javascriptの予約語一覧

abstract (*)
as 
boolean
break
byte
case
catch
char
class 
continue
const 
debugger (*)
default
delete
do
double
else
enum (*)
export 
extends 
false
final
finally
float
for
function
goto (*)
if
implements (*)
import 
in
instanceof
int
interface 
is 
long
namespace 
native (*)
new
null
package 
private 
protected (*)
public 
return
short
static 
super 
switch
synchronized (*)
this
throw
throws (*)
transient (*)
true
try
typeof
use 
var
void
volatile (*)
while
with
 

phpでtwitterAPIのcreated_atタイムゾーンを日本にする方法
2014-04-28

  【問題】
PHPでtwitterAPIを使用して、twitterの作成時間(create_date)を取得した際、
なんと、システム時刻とずれいていることがわかりました。
---------------------------------------------------
OSのシステム時刻:2014-04-28 11:39:50
create_dateの値:Mon Apr 28 02:39:34 +0000 2014
---------------------------------------------------
ちょうど9時間ずれていますので、タイムゾーンの問題だとわかりました。

【対応方法1:php.iniの修正】
php.iniのdate.timezoneはディフォルトだとEuropeになっています、これを「Asia/Tokyo」にするだけ
(xamppの場合、この設定を有効にするため、再起動が必要です)


修正前:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone=Europe/Berlin

修正後:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone=Asia/Tokyo


【対応方法2:create_date変数取得時タイムゾーンを設定しなおす】
。。。
//create_dateデータオブジェクトを作成
$create_date = new DateTime($tl->created_at);
 
//タイムゾーンを設定しなおす
$create_date->setTimezone(new DateTimeZone('Asia/Tokyo'));
。。。


わたしとしては、方法1がおすすめです。

Deprecated: Function ereg_replace() is deprecated
2014-05-22

【原因】
ereg_replace関数は PHP 5.3.0 で 非推奨となりました。
代わりにpreg_replace関数を使用すること。

【例】
複数の改行コードを一つにする

修正前:

$item_desc = ereg_replace( "\n+", "\n", $it->item_desc );

修正後:

$item_desc = preg_replace( /\n+/, "\n", $it->item_desc );

【注意点】
preg_replaceの1つ目の引数を「//」でくくること!

Fatal error: Call to undefined function imap_open
2014-07-27

phpでimap_openを使用してメール受信するプログラムを実行したら、次のエラーが出ました。

 【エラー内容】
Fatal error: Call to undefined function imap_open() in D:\xampp\htdocs\smart.freehand\admin\controllers\alert_xxx.php on line 76

【環境】
OS:windows8.1
サーバー:xampp(apache, mysql)
言語:php

【原因】
IMAP関数ライブラリのphp_imap.dllが有効になっていない。

【対応】
php.iniの設定には次の行ありましたが、
;extension=php_imap.dll

「;」を削除して、xampp再起動(apache再起動でもOK)
extension=php_imap.dll