【问题标题】:PHP Select From Database And Display IF Variable ExistsPHP 从数据库中选择并显示如果变量存在
【发布时间】:2017-06-28 17:59:27
【问题描述】:

我正在创建一个包含“问题”内容的小型在线网站。这是我收集的代码:

<?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 代码中 &lt;?php echo display_endorsed; ?&gt; 时,我看到的是 Not Here 而不是实际内容。谁能看出我哪里出错了?

【问题讨论】:

  • 您容易受到 SQL 注入的攻击。在 mysqli 或 PDO 中使用准备好的语句
  • 你在使用寄存器全局变量吗?
  • 你的$issue_endorsed变量是整数还是字符串?
  • 但是作为整数还是字符串?用===很重要,用var_dump告诉
  • @AdamForbis 好吧,我将它从 === 更改为 == 现在工作正常,所以我想那里有问题。谢谢

标签: php


【解决方案1】:

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

if($issue_endorsed === 1){

正在进行身份比较。说$issue_endorsed等于整数1?这不是真的,因为数据库将它作为字符串返回。将此切换为 == 解决了这个问题,因为它在比较之前将字符串 "1" 转换为整数 1

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

  1. PHP 不是一种无类型语言,它是一种动态语言。仍然有类型,它们只是很容​​易在大多数时间之间交换。
  2. 通常可以安全地假设数据库将所有内容都作为字符串返回(但某些数据库选项不会)。

【讨论】:

  • 感谢亚当的解释
猜你喜欢
  • 2020-04-25
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多