PHP从数据库中选择并显示IF变量存在

时间:2017-06-28 17:59:28

标签: php

我正在开设一个小型在线网站,其内容包含"问题"。这是我收集的代码:

<?php
$issue_sql = "SELECT * FROM issues WHERE id = '$id'"; // From URL
$issue_res = mysqli_query($con, $issue_sql);
while($issue = mysqli_fetch_assoc($issue_res)){

    $issue_id = $issue["id"];
    $issue_added = $issue["added"];
    $issue_content = $issue["content"];
    $issue_endorsed = $issue["endorsed"];

    $issue_year = date("Y", strtotime($issue_added));
    $issue_date = date("l jS F, Y", strtotime($issue_added));

}
?>

我希望display只有在它存在的情况下才会认可(在这种情况下它确实存在)。所以我的代码是:

<?php
if($issue_endorsed === 1){
    $endorsed_sql = "SELECT article FROM issue_endorsed WHERE id = '$issue_id'";
    $endorsed_res = mysqli_query($con, $endorsed_sql);
    while($endorsed = mysqli_fetch_assoc($endorsed_res)){

        $endorsed_article = $endorsed["article"];

        $display_endorsed = "

            <div class=\"section\">
                <div class=\"sectionText\">
                    <b>We Recommend ...</b>
                    <br>
                    ... $endorsed_article
                </div>
            </div>
            <div class=\"contentDivideSecondary\"></div>

        ";

    }
}else{
    $display_endorsed = "Not Here";
};
?>

问题是,当我在html代码中<?php echo display_endorsed; ?>之后,我显示了Not Here而不是实际内容。谁能看到我出错的地方?

1 个答案:

答案 0 :(得分:1)

你在哪里与一件主要事情有关的问题。 MySQL可能会将列endorsed的数据库值作为字符串返回。现在你的if语句:

if($issue_endorsed === 1){

正在进行身份比较。说$issue_endorsed与1的整数相同?这不是真的,因为数据库将其作为字符串返回。将其切换为==可以解决问题,因为它会在比较之前将字符串"1"变成整数1

要记住这样一个问题的要点是

  1. PHP不是无类型语言,它是动态语言。还有类型,它们在大多数情况下都很容易交换。
  2. 通常可以安全地假设数据库以字符串形式返回所有内容(某些数据库选项虽然赢了)。