【问题标题】:PHP MySQLi : Selecting multiple rows and displaying chosen column values for eachPHP MySQLi:选择多行并为每个显示选择的列值
【发布时间】:2017-03-23 23:21:47
【问题描述】:

我是 MySQLi 和 PHP 的新手,我正在尝试通过匹配 postid 从我的数据库中选择 cmets。它应该选择所有具有该 ID 的行,并显示每个行的名称和值。但不工作。

      // Create connection
  $conn = mysqli_connect($hostname, $username, $password, $dbname);
  // Check connection
  if (!$conn) {
      die("Connection failed: " . mysqli_connect_error());
      echo "<script>alert('dead!')</script>";
  }

    $get_comments = "SELECT * FROM 'articlecomments' WHERE 'commentpost' = 'post1' LIMIT 0 , 30";
  $check_comments = mysqli_query($conn, $get_comments);

    while ( $row = mysqli_fetch_assoc($check_comments) )  {
        echo "<script>alert('we have comments!');</script>

      <div class='comment-single'>
        <div class='row'>
          <div class='col-md-3'>
            " . $check_comments['commentname'] . "
          </div>
          <div class='col-md-9'>
            " . $check_comments['commentvalue'] . "
         </div>
       </div>
      </div>
    ";

}

连接建立得很好,因为我可以在同一个脚本中访问数据库的其他部分。我怀疑我的查询有问题。

谢谢

【问题讨论】:

  • 去掉'commentpost前的单引号
  • @WebCode.ie ops 谢谢,已修复。然而,这似乎不是问题
  • 警告:使用mysqli 时,您应该使用parameterized queriesbind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了一个严重的SQL injection bug切勿$_POST$_GET任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。

标签: php mysql mysqli


【解决方案1】:

使用刻度转义列而不是单引号:

SELECT *
FROM `articlecomments`
WHERE `commentpost` = 'post1'
LIMIT 30

【讨论】:

    【解决方案2】:

    您必须使用$row['commentname']$row['commentvalue'] 从数据库中获取数据。

    echo "<script>alert('we have comments!');</script>
    
      <div class='comment-single'>
        <div class='row'>
          <div class='col-md-3'>
            " . $row['commentname'] . "
          </div>
          <div class='col-md-9'>
            " . $row['commentvalue'] . "
         </div>
       </div>
      </div>
    ";
    

    【讨论】:

      【解决方案3】:

      你的表名周围的单引号是错误的:

      $get_comments = "SELECT * FROM 'articlecomments' WHERE 'commentpost' = 'post1' LIMIT 0 , 30";
      

      正确的是:

      $get_comments = "SELECT * FROM articlecomments WHERE commentpost = 'post1' LIMIT 0, 30";
      

      必须写$row:

       " . $row['commentname'] . "
            </div>
            <div class='col-md-9'>
              " . $row['commentvalue'] . "
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多