php - 第二次尝试限制 mySQL 和 PHP 中的搜索

标签 php mysql

所以,我真的很困惑。我不知道我在做什么,但是,我正在尝试限制基于网络的搜索是私有(private)的还是公共(public)的。

此代码不起作用,但是,我正在尝试弄清楚如何使它起作用。如何让私有(private)网络只对该网络中的人显示?????????????

    $query = mysql_query("SELECT * FROM requests ORDER BY dateposted DESC");

while ($row = mysql_fetch_assoc($query)){

    $network = mysql_query("SELECT * FROM network");

    while ($row2 = mysql_fetch_assoc($network)) {
        $display = false;
        $pos = strpos($row['network'], $search);
        if ($row2['visible'] == "public" and $search == "Global") {
            $display = true;
        } else          
        if ($pos == true and 
        ($row2['visible'] == "public" or $row2['username'] == $username)) {
            $display = true;
        } else
        if  ($row2['visible'] == "private") {
            $display = false;
        }
    }
        echo $display;
        if ($display == true){
            echo "<div id='".$row["id"]."' class='item'>";
            echo '<div style="width: 75%;">';
            echo "<h4 style='display: inline;'>".$row["user"]." requests:</h4><br/>";
            echo "<h2 style='display: inline;'>".$row["title"]."  </h2>";
            echo '</div>';

            echo '<h3 id="button" style="border-radius: 10px; padding: 4px; color: white; float: right; position: relative; top: -50px; border: 2px solid grey; background-color: #C0504D;">Apply</h2>';
            echo "</div>";
        }
}

网络模式:

network text    utf8_general_ci     No                                   
username    text    utf8_general_ci     No                                   
visible text    utf8_general_ci     No  

请求模式:

id  int(11)         No      auto_increment                          
user    text    utf8_general_ci     No                                   
title   text    utf8_general_ci     No                                   
description text    utf8_general_ci     No                                   
picture text    utf8_general_ci     No                                   
price   text    utf8_general_ci     No                                   
premium datetime            No                                  
type    text    utf8_general_ci     No                                   
network text    utf8_general_ci     No                                   
dateposted  datetime            No  

最佳答案

这里有点晚了,所以我会尽量把这个答案写得更好。

您需要打印所有公共(public)网络,并且只打印与用户相关的私有(private)网络。另外,如果我理解的话,您的搜索可以是“全局”或具有网络的部分名称,对吗?

所以你的查询可以是这样的:

if( $search == "Global" ) {
  $sql = "select n.*
               , r.* 
            from network n
           inner join request r on n.network = r.network
           where  n.network = 'public' 
              or (n.network = 'private' 
             and  n.username = '".$username."')";
} else {
  $sql = "select n.*
               , r.* 
              from network n
             inner join request r on n.network = r.network
             where  n.network = 'public' 
                or (n.network = 'private' 
               and  n.username = '".$username."')
               and n.network like '%".mysql_real_escape_string($search)."%'";
}

这里的like意思是“选择我所有网络名称包含搜索内容的数据。更多示例和解释可以在heremysql docs中查看。

关于php - 第二次尝试限制 mySQL 和 PHP 中的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9577091/

相关文章:

php - 使用 PHP 将 SQL 表导出为 CSV 格式

javascript - 需要在 HighChart 中链接 URL

mysql - 比较 MySQL 的数字和字符串值的混合列

php - Codeigniter 文件上传问题

php - 从 Laravel 5.1 中的通用数据库查询获取 Eloquent 模型的实例

php - Grocery CRUD 中的依赖下拉列表 (CodeIgniter)

php - 使用 Bootstrap 在注册表单中显示验证

mysql - 抽象数据库设计。

javascript - 如何修复 "DownloadURL gives responseXML null value"

php - sql函数不会通过php执行