SQLでリストどうしを比較

あるリストにないデータで別のリストにあるデータを絞込

SELECT uri.* FROM `tableA` 
          LEFT JOIN teate
          on `A_id` = `B_id` 
          AND `A_tstp` = `B_tstp`
          where 
          NOT EXISTS(
              select * from tableB 
              where `A_id` = `B_id` 
              AND `A_tstp`=`B_tstp`
              )

あるリストにあるデータを別のリストにあるデータで絞込

  NOT がいらなくなる

 

一回のクエリで値の有無を探して、あれば見出し行も書き出し、無ければないで

検索した結果、戻り値がないなら[ありませんでした]
あったら、内容を返す。

これを一回のクエリで実行したい。

$strsql=“SELECT なんだ*, かんだ
FROM このテーブル
LEFT JOIN あのテーブル
ON このカラム = あのカラム
where なじょうけん ;

$sth=$dbh -> query($sql);  //ふつうにクエリ実行

$result = $sth->fetchAll(); //一度フェッチする

$array_size= count($result); //なければ 0がかえってくる

foreach ($result as $key => $value) {  //こいつを回す。
if($key==0){   // ループの一回目は普通ゼロ
foreach ($value  as $k => $v) {
$csvth[]= $k ;  //連想配列なのでキーを取り出して配列化
}
fputcsv($fp, $csvth);  //配列をCSVに
}
fputcsv($fp, $value);  //ここからは値行を一行目から
}

フェッチしないで$sthにさわるとポインタが送られてしまうので全部取り出せなくなる。

とあるプラグインを読み込んで別ウィンドウでテーマフォルダのテンプレートを開く方法

http:// wrapper is disabled in the server configuration by allow_url_include=0

というエラーがありまして。その解決方法

$fullpath=dirname(__FILE__);

    $path=strrpos($fullpath,‘/’);

    $path9=strrpos($fullpath,‘/’);

    $plugin-name=substr($fullpath,0,$path).‘/plugin-name;

     define(‘PDIR’,$plugin-name);

ここまでプラグインのTOPで行う

以下を別窓で開いたテーマフォルダのテンプレートに書く

require_once (PDIR.‘/plugin-file.php);

このプラグインを有効化する際に、9文字分の予期しない出力が生成されました。

自作のプラグインを有効化しようとしたら、表題のメッセージが表示されました。

この後ログオフしたら、cookie  がどうとかでWordPressにログインできない

とりあえず、うかつにつけたコメント文/* */は削除。//ならOK

BOMがどうとか書いてあったが、BOMなしUTF改行もLFでもんだいなさそう。一行ずつ試すが9文字の元は不明
なんといってもプラグインは正常に動作する。他のサーバーではデないがエックスサーバーだけでている。

結局wp-config.php  の define(‘WP_DEBUG’, false);をtrueにして、あちこちNoticeを潰したら直った。

プラグインでCSSファイルを読み込む方法

CSSを読み込むには、以下の関数を使用します。
wp_enqueue_style

$pdir; にはこのプラグインフォルダまでのフルパスが格納されておる

function your_styles() {
global $pdir;
wp_enqueue_style( ‘message’,  $pdir . ‘/message.css’, array(), null, ‘all’);
}
add_action( ‘wp_enqueue_scripts’, ‘ your_styles’);

 

  • $handle:(必須) (required) ハンドル名を指定 [デフォルト: なし]
  • $src:(任意)ファイルパスを指定 [デフォルト:false]
    get_option(‘siteurl’) // ルートディレクトリ
    get_bloginfo(‘stylesheet_directory’) // 子テーマのディレクトリ
    get_bloginfo(‘template_url’) // 親テーマのディレクトリ
    get_bloginfo(‘plugins_url’) // プラグインのディレクトリ
  • $deps:(任意)依存関係を明示。特定のCSSファイルの後に読み込みを行わせたい場合に指定する。ハンドル名で明示 [デフォルト:array()]
  • $ver:(任意)ファイルのバージョン番号を指定 [デフォルト:false]
  • $media:(任意) CSSのメディアタイプを指定 [デフォルト:’all’]

Fatal error: Call to undefined function

自作プラグイン内の関数が存在しないと出る。・・・

ファイル名は正しい。参照も正しい。同じフォルダの別の関数は実行可能。パーミッションでもない。

sample(); ←これで呼び出すが、他の関数は呼び出せる。

$abcde = sample() ; これで実行できた。  意味はわからない・・

日付フォーマットをハイフン区切りに

datetimepicekrで入れた日付がMySqlに入らない。

→datetimepicekr.jsを開いて直接編集パターン

142  format:            'Y-m-d',
204  id:'ここに独自ID',
205  roundTime:'round', // ceil, floor
206  className:'独自クラス',

→PHPで直すパターン
datetimepicker timestampと同じ型にすれば入るだろう。

2015/02/28 17:20:00 → 2015-02-28 17:20:00

date( “Y-m-d H:i:s”,strtotime( $_POST[“dhms”] ))

これでスッキリ解決。

SQL文 LOAD DATA INFILEまとめ

行数の多いテキストファイルを超高速でテーブルに取り込むSQL文。

数万件合ってもコンマ数秒で取り込むので使わないわけにはいかない。INSERTではとてもやってられない。

ハマり所1
読み込むファイルのパーミッションとディレクトリのパーミッション= ともに755にしておく

ハマりの2
LOAD DATA [ local ] INFILE “data.txt” INTO TABLE テーブル名;
このパラメータlocalはMySqlユーザーにFILE権限なしでも実行可能にするものなので、入れておくべき。

ハマりの3
改行記号は  LINES TERMINATED BY ‘\n’;  と紹介しているところが多いが、 “\n”としないと一行しか入らなかった。

ハマりの4
コンソールから実行すると上手くいくが、PDOだとエラーになる。
$dbh = new PDO($db,$user,$password,array(PDO::MYSQL_ATTR_LOCAL_INFILE => true));
array(・・)を追加したら取り込めた。

MySQL 既存テーブルにCSVをインポート

そのままインポートすると別の新規テーブルができてしまう。

  1. とりあえず カレントのディレクトリがここらしいのでファイルをコピーする→ /var/lib/mysql/mws/tmp/
  2. ファイルのパーミッションは755でいいらしい。tmpのパーミッションも755にしておく
  3. テーブルまで選択してSQL文
    LOAD DATA INFILE “tmp/data.csv”
    INTO TABLE t_us FIELDS TERMINATED BY “,”
    LINES TERMINATED BY “\r”
    IGNORE 1 LINES;
  4. 改行文字のrと先頭の1行がフィールド名なので入れない→IGNORE
    改行文字を間違えるとデータは1行しか入らない。

phpMyAdminアップデート

#cd /usr/share/  ここに移動

# mv phpmyadmin/ _phpmyadmin/  名前を変えてバックアップ

# cd /home/usr/ユーザ名 ここにダウンロードするのでカレントを移動

# wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.2.12/phpMyAdmin-4.2.12-all-languages.tar.gz

# tar phpMyAdmin-4.2.12-all-languages.tar.gz    解凍

# mv phpMyAdmin-4.2.12-all-languages/ phpMyaAdmin/    ディレクトリ名変更

# chmod 660 /home/ユーザ名/phpMyAdmin/config.inc.php
# cp -r /home/ユーザ名/phpMyAdmin/ /usr/share/phpMyAdmin/
ディレクトリごとコピー
# cp /usr/share/_phpMyAdmin/config.inc.php /usr/share/phpMyAdmin/config.inc.php
以前の設定ファイルをコピー
# chown -R root.apache /usr/share/phpMyAdmin/
オーナー変更して完了