PHP if ( category === '1' ) が実行されない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
dic
記事: 657
登録日時: 13年前
住所: 宮崎県
連絡を取る:

PHP if ( category === '1' ) が実行されない

#1

投稿記事 by dic » 1年前

PHPをやっていて、つまづきました。

というのも、if文で、条件がそろっているのに、そこを通らないというものです。

コードです。

コード:

<?php


//  関数一つに一つの機能のみを持たせる
//  1.データベース接続
//  2.データを取得する
//  3.カテゴリー名を表示


//  1.データベース接続
//  引数:なし
//  返り値:接続結果を返す
function dbConnect(){
    $dsn = "mysql:host=mysql212.phy.lolipop.lan;dbname=LAA1503693-mydb;charset=utf8";
    $user = '';  // LAXXXXXXXX
    $pass = '';  // xxxxxxxxxx

try {
    $dbh = new PDO($dsn,$user,$pass,[
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    ]);

} catch( PDOException $e ) {
    echo '接続失敗'.$e->getMessage();
    exit();
}
    return $dbh;
}

//  2.データを取得する
//  引数:なし
//  返り値:取得したデータ
function getAllBlog(){

    $dbh = dbConnect();
    //1    SQL文の準備
    $sql = 'SELECT * FROM blog';
    //2    SQLの実行
    $stmt = $dbh->query($sql);
    //3    SQLの結果を受け取る
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
    //var_dump($result);

    return $result;

    $dbh = null;
}


//  取得したデータを表示
$blogData = getAllBlog();



//  3.カテゴリー名を表示
//  引数:数字
//  返り値:カテゴリーの文字列
function setCategroyName($category){
    if ( $category === '1' ) {
        return 'ブログ';
    } elseif ( $category === '2' ){
        return '日常';
    } else {
        return 'その他';
    }
}




?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible"content="ie=edge">
        <title>ブログ一覧</title>
    </head>
    <body>
        <h2>ブログ一覧</h2>
        <table>
            <tr>
                <th>No</th>
                <th>タイトル</th>
                <th>カテゴリ</th>
            </tr>
            <?php foreach($blogData as $column) : ?>
            <tr>
                <td><?php echo $column['id'] ?></td>
                <td><?php echo $column['title'] ?></td>
                <td><?php echo setCategroyName( $column['category'] ) ?></td>
            </tr>
            <?php endforeach; ?>
        </table>
    </body>

</html>

setCategroyName()関数に、引数1を渡しているのですが、
'その他'が返ってきます。
'ブログ'が返ってきてほしいのですが、どこを間違っているのでしょうか?
$column['category'] は 1 になることを確認しています。

アバター
あたっしゅ
記事: 664
登録日時: 13年前
住所: 東京23区
連絡を取る:

Re: PHP if ( category === '1' ) が実行されない

#2

投稿記事 by あたっしゅ » 1年前

東上☆海美☆「

コード:

<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible"content="ie=edge">
        <title>ブログ一覧</title>
    </head>
    <body>
    <header> 
        <h2>ブログ一覧</h2>
    </header>
<main>
<?php
//  関数一つに一つの機能のみを持たせる
//  1.データベース接続
//  2.データを取得する
//  3.カテゴリー名を表示

//  1.データベース接続
//  引数:なし
//  返り値:接続結果を返す
function dbConnect(){
    $dsn = "mysql:host=mysql212.phy.lolipop.lan;dbname=LAA1503693-mydb;charset=utf8";
    $user = '';  // LAXXXXXXXX
    $pass = '';  // xxxxxxxxxx

try {
    $dbh = new PDO($dsn,$user,$pass,[
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    ]);

} catch( PDOException $e ) {
    echo '接続失敗'.$e->getMessage();
    //exit();
}
    return $dbh;
}

//  2.データを取得する
//  引数:なし
//  返り値:取得したデータ
function getAllBlog(){

    $dbh = dbConnect();
    //1    SQL文の準備
    $sql = 'SELECT * FROM blog';
    //2    SQLの実行
    $stmt = $dbh->query($sql);
    //3    SQLの結果を受け取る
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
    //var_dump($result);

    return $result;

    $dbh = null;
}


//  取得したデータを表示
//$blogData = getAllBlog();



//  3.カテゴリー名を表示
//  引数:数字
//  返り値:カテゴリーの文字列
function setCategroyName($category) {
    if ( $category === '1' ) {
        return 'ブログ';
    } elseif ( $category === '2' ){
        return '日常';
    } else {
        return 'その他';
    }
}

function setCategroyName2($category) {
    if ( $category === 1 ) {
        return 'ブログ';
    } elseif ( $category === 2 ){
        return '日常';
    } else {
        return 'その他';
    }
}
?>
        <table>
            <tr>
                <th>No</th>
                <th>タイトル</th>
                <th>カテゴリ</th>
            </tr>
            <?php
                //foreach($blogData as $column) :
            ?>
            <tr>
                <td><?php echo $column['id'] ?></td>
                <td><?php echo $column['title'] ?></td>
                <td><?php $column['category'] = 1 ?></td>
                <td><?php echo $column['category'] ?></td>
                <td><?php echo setCategroyName2( $column['category'] ) ?></td>
                <td><?php echo setCategroyName( $column['category'] ) ?></td>
            </tr>
            <?php 
                //endforeach;
            ?>
        </table>
<main>
<footer>
</footer>
</body></html>
以上、実証コードみみ。

コード:

function setCategroyName2($category) {
    if ( $category === 1 ) {
        return 'ブログ';
    } elseif ( $category === 2 ){
        return '日常';
    } else {
        return 'その他';
    }
}
整数として比較すればいいんじゃないみみ ?
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。

dic
記事: 657
登録日時: 13年前
住所: 宮崎県
連絡を取る:

Re: PHP if ( category === '1' ) が実行されない

#3

投稿記事 by dic » 1年前

あたっしゅさん回答ありがとうございます。

正数と比較したらうまく'ブログ'と表示されました。

しかし、参考にしているサイトにソースコードは '1' なんですよ
MAMP らしいのですが、実行環境が異なるから PHP のバージョンも違ってきて
動作が異なるのでしょうかね?

よくわかりませんが、とにかく期待した通りに動きました。
ありがとうございました。
サンプル.jpg
参考のソースコード
サンプル.jpg (14.87 KiB) 閲覧数: 2731 回

返信

“C言語何でも質問掲示板” へ戻る