[php+sql]1件だけ取得して出力する方法

混乱しがち。

取得

登録データでユニークになってる「id」を照合して拾ってくるとする。

$sql = "SELECT * FROM 【テーブル名】 WHERE 【カラム名】 = 【値】";
$stmt = $dbh->prepare($sql);
$stmt->execute();

1個だけほしいからWHEREは=でつなぐ。

有無チェック

これは前回の記事参照。

出力

有無チェックでfetch()を作ったから、これを活用する感じになる。

$result = $stmt -> fetch();
$id = $result['id'];
print $id;

ポイント

var_dumpすれば分かるけど、$resultを作った時点で特定行の中身が連想配列化されてる。

なので、記事一覧を作るときよりも1階層浅くなる。

だから、foreachとかで回す必要はなく、keyを指定するだけでいい。

まとめ

//SQLからデータを拾ってくる
$sql = "SELECT * FROM 【テーブル名】 WHERE 【カラム名】 = 【値】";
$stmt = $dbh->prepare($sql);
$stmt->execute();
$dbh = null;

//データを配列にする
$result = $stmt -> fetch();
if($result === false){
    //配列が空だったら他所に飛ばす
    $goaway = 'https://www.google.co.jp';
    header('Location:'.$goaway, true, 301);
    exit();
}else{
    //配列が入ってたらkeyを指定してvalueを変数に格納
    $example = $result['example'];
}

//出力
print $example;

そんな感じで。

コメント

タイトルとURLをコピーしました