自然結合というものがある、基礎だけど知らない人もいる。

自然結合というものがある、基礎だけど知らない人もいる。
結合するTABLEのフィールド名が同じでなくてはならないので
設計する人に一任されるのでほぼ使うことはないと思います?

select * from demo1 natural join demo2;

-- table demo1
-- id,pass

-- table demo2
-- id,name,tel,email

--idで自動で結合してくれる(自然結合)

 

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();