MYSQLのif文みたいなものを使用する機会が物凄く少ない気がする。

### mysql case = if文みたいなもの

```sql
select namae,tensu
case when (tensu >= 75 and tensu <= 80)  then '可'
when (tensu >= 25 and tensu < 75)  then '否' else '???' end as kahi
from tbl;
```
table name tbl
|namae|tensu|
|---|---|
|hirose|77|
|non|76|
|arimura|78|
|aragaki|80|

mysql case = if文みたいなものを使用する機会が物凄く少ない気がする。
プログラム言語って使用しなければ抜け落ちるです。
自分の場合、たぶん長期的な記憶に障害があって抜け落ちるです。

メモしたことすら忘れてしまう…これは痛い。

 

 

同一TABLEを参照しアップデートする。

同一TABLEを参照しアップデートする。
これでアップデートできる事を昨日知りました。

UPDATE demo1,(select chk from demo1 where id=1) as demo2 SET
demo = "2" where id = 1 and chk = demo2.chk;

--------------
--------------
/*
同一TABLEを参照しアップデートする。
table demo1
id,chk
1,123
*/
--------------

PHPでバインドするこれでSQLの脆弱性が!?

上記の画像では脆弱性がある。

PHPでバインドするこれでSQLの脆弱性が解決してくれる?
こういう記述すると良さげ。
おまけでSQLデバッグ方法を書いとります。

<?php
$sql =<<<SQL
select * from demo where id = :id and namae = :hoge;
SQL;
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$id = 123;
$hoge = "hoge";
$sth = $dbh->prepare($sql);
$sth->bindValue(':id', $id, PDO::PARAM_INT);
$sth->bindValue(':hoge', $hoge, PDO::PARAM_STR);
$sth->execute();

//mysql log?https://github.com/panique/pdo-debug:$sth->debugDumpParams();

$fval = array(
    ':id'=>1,
    ':name'=>"hoge"
);
$sth = $dbh->prepare($sql);
$sth->execute($fval);
print PdoDebugger::show($sql, $fval);
$sth->debugDumpParams();

google NewsをRSSで取得してjsonで返却するPHPプログラム

//$_POST["cate"]...カテゴリ
//$_POST["sh"]...検索キーワード

if($_POST["cate"] and $_POST["sh"]){
    $cate = urlencode($_POST["cate"]);
    $sh = urlencode($_POST["sh"]);
    $res = simplexml_load_file("https://news.google.com/news/rss/headlines/section/q/$sh/$cate?ned=jp&hl=ja&gl=JP");
    rss($res);
}

function rss($obj=NULL){

    if(is_object($obj)){
        if($obj->channel->item){
            $cnt = 0;
            foreach ($obj->channel->item as $item) {

                $resj[$cnt]["title"] = (string)$item->title;
                $resj[$cnt]["link"] = (string)$item->link;
                $resj[$cnt]["pubDate"] = (string)$item->pubDate;
                $resj[$cnt]["description"] = (string)$item->description;
                $resj[$cnt]["source"] = (string)$item->source;
                $cnt++;
            }
        }
    }
    echo json_encode($resj);
}

google NewsをRSSで取得してjsonで返却するPHPプログラムです。
ご自由にご使用ください。