【问题标题】:Select from same SQL table twice using PHP使用 PHP 从同一个 SQL 表中选择两次
【发布时间】:2022-01-17 02:43:31
【问题描述】:

我正在用 PHP 创建一个站点,其中列出了论坛的用户栏,并有一个名为“isOfficial”的列 - 我已经能够分别选择 NULL 和 IS NOT NULL 但我不确定如何同时选择两者.

尽我所能描述,我希望能够从同一个表中运行这两个:

第一个查询:

<?php include_once("assets/php/db.php");
      $sql = "SELECT ubFilename, ubGroupName, ubGroupOwner, ubOwnerLink, isOfficial, isActiveGroup FROM UBSUserbars WHERE NOT (isOfficial <=> NULL) ORDER BY ubGroupName";
      $resultset = mysqli_query($conn, $sql);      
      while( $record = mysqli_fetch_assoc($resultset) ) {
?>

第二次查询:

<?php include_once("assets/php/db.php");
      $sql = "SELECT ubFilename, ubGroupName, ubGroupOwner, ubOwnerLink, isOfficial, isActiveGroup FROM UBSUserbars WHERE (isOfficial <=> NULL) ORDER BY ubGroupName";
      $resultset = mysqli_query($conn, $sql);      
      while( $record = mysqli_fetch_assoc($resultset) ) {
?>

并让它们在同一页面上分别输出:

            <div class="cards">
                <?php
                    include_once("assets/php/db.php");
                    $sql = "SELECT ubFilename, ubGroupName, ubGroupOwner, ubOwnerLink, isOfficial, isActiveGroup FROM UBSUserbars WHERE NOT (isOfficial <=> NULL) ORDER BY ubGroupName";
                    $resultset = mysqli_query($conn, $sql);      
                    while( $record = mysqli_fetch_assoc($resultset) ) {
                    ?>
                <div class="col-sm-4 col-card <?php echo $record['isActiveGroup'] === 'active' ? 'active-group' : ''; ?>">
                <img src="i/OGUsers/<?php echo $record['ubFilename']; ?>">
                <hr>
                <h4 class="group"><?php echo $record['ubGroupName']; ?></h4>
                <span>Owner: <a class="owner" href="<?php echo $record['ubOwnerLink']; ?>"><?php echo $record['ubGroupOwner']; ?></a></span>
            </div>
        <?php } ?>

【问题讨论】:

  • 如果您想同时选择NULLNOT NULL,那么为什么还要包含WHERE 条件呢?只需省略WHERE

标签: php mysql sql


【解决方案1】:

如何删除 SQL 查询中的 WHERE 子句:

$sql = "SELECT ubFilename, ubGroupName, ubGroupOwner, ubOwnerLink, isOfficial, isActiveGroup FROM UBSUserbars ORDER BY ubGroupName";

如果你想在一列中同时选择 A 和 B 值,你的 WHERE 子句应该是:

WHERE (table.column = A or table.column = B)

在您的情况下,您希望在 isOfficial 列中同时选择 NULL 和 NOT NULL 值,因此 WHERE 子句将是:

WHERE (isOfficial IS NULL or isOfficial IS NOT NULL)

这会变成

WHERE 1 

或者不需要WHERE子句

您的代码将变为:

<div class="cards">
<?php
    include_once("assets/php/db.php");
    $sql = "SELECT ubFilename, ubGroupName, ubGroupOwner, ubOwnerLink, isOfficial, isActiveGroup FROM UBSUserbars ORDER BY ubGroupName";
    $resultset = mysqli_query($conn, $sql);
    while( $record = mysqli_fetch_assoc($resultset) ) {
?>
    <div class="col-sm-4 col-card <?php echo $record['isActiveGroup'] === 'active' ? 'active-group' : ''; ?>">
        <img src="i/OGUsers/<?php echo $record['ubFilename']; ?>">
        <hr>
        <h4 class="group"><?php echo $record['ubGroupName']; ?></h4>
        <span>Owner: <a class="owner" href="<?php echo $record['ubOwnerLink']; ?>"><?php echo $record['ubGroupOwner']; ?></a></span>
    </div>
<?php } ?>

【讨论】:

  • 我试图在同一页面上有两个单独的输出,因此 not null 出现在标题“官方用户栏”下,而 null 出现在“组用户栏”下。
  • 从字面上看,别担心,我很愚蠢,这是凌晨 3 点让自己难堪的好方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-02
  • 2023-04-05
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 2014-05-04
相关资源
最近更新 更多