Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
隐藏php表,除非通过搜索调用它_Php_Sql - Fatal编程技术网

隐藏php表,除非通过搜索调用它

隐藏php表,除非通过搜索调用它,php,sql,Php,Sql,我目前有一个页面,它在表中显示数据库中的数据,并且还可以使用一些关键术语进行搜索。我想做的是隐藏表,除非正在搜索它。我重新表述了我的代码,因为这是一项作业,我不想被认为是剽窃。我真的希望有人知道怎么做 <?php include_once('connection.php'); $SQL = "SELECT * FROM `players`"; if (isset($_POST['search'])) { $search_word = mysql_real_escap

我目前有一个页面,它在表中显示数据库中的数据,并且还可以使用一些关键术语进行搜索。我想做的是隐藏表,除非正在搜索它。我重新表述了我的代码,因为这是一项作业,我不想被认为是剽窃。我真的希望有人知道怎么做

<?php
  include_once('connection.php');

  $SQL = "SELECT * FROM `players`";

  if (isset($_POST['search'])) {
    $search_word = mysql_real_escape_string($_POST['search_bar']);
    $SQL .= " WHERE player_id LIKE '%{$search_word}%'";
    $SQL .= " or player_name LIKE '%{$search_word}%'";
  }

  $SQL .= 'group by player_id, player_name order by player_id ASC';

  if( !( $SQLRes = mysql_query( $SQL ) ) ){
    echo 'Retrieval of data from Database Failed - #'.mysql_errno().': '.mysql_error();
  }else{
    if( mysql_num_rows( $SQLRes )==0 ){
      echo '<tr><td colspan="1">No results </td></tr>';
    }else{
      $current_player_id = false;
      while( $row = mysql_fetch_assoc( $SQLRes ) ){
        if ($row['player_id'] !=$current_player_id) {
          if ($current_player_id !== false)
             echo '</table>';
          echo '
                <h4>'.$row['player_id'].'</h4>

                <table style = "width: 100%" class="listing" cellpadding="0" cellspacing="0">
                  <tr>
                    <th style="width: 50%">Player Name</th>
                  </tr>';

          $current_player_id = $row['player_id'];
        }
        echo '<tr>
                <td>'.$row['player_name'].'</td>
                <td><a href =delete.php?del='.$row['player_id'].'><strong>DELETE<strong/></a></td>
             </tr> ';
      }
    }
    echo '</table>';

?>
</table>

在开始时,您可以使用if语句打开:

if (isset($_POST['search'])) {
  $search_word = mysql_real_escape_string($_POST['search_bar']);
  $SQL .= " WHERE player_id LIKE '%{$search_word}%'";
  $SQL .= " or player_name LIKE '%{$search_word}%'";
}
在我看来,检查
$\u POST
变量会告诉您是否有搜索

如果只需要包装整个代码体,它就可以满足您的需要

这就是说,在你的代码中还有一些琐碎的地方-请以正确的方式-努力帮助和指导

1-与其在SQL中构建“like”语句,不如看看绑定变量。另外,请看一下
mysqli
使用示例

2——而不是重复通过代码,考虑建立一个$HTML字符串,然后在最后回响。

3-看起来您正在为SQL select编写代码,以返回同一播放器的多个实例。这表明数据模型(该表毕竟称为
player
)或SELECT中存在缺陷-为什么不返回不同的行

4-将SQL错误回显到控制台是一种让外部人员访问有关系统的受保护信息的好方法。考虑将日志记录到文件中——至少在生产中。


我已经纠正了你的压痕。了解如何使用它,如果您正确缩进代码,它将节省您的大脑很多倍。

尽量不要使用MySQL,它在PHP中已被弃用,并将在以后的版本中删除。改用MySQLi,我会调查的。我只是一个初学者,希望它和MySQL没有太大的不同,所以我可以很容易地把它捡起来。谢谢你,罗布,我觉得自己太傻了。我只是一个新手,我还在学习基础知识,所以请容忍我的愚蠢问题。@Rose这里没有愚蠢的问题,只要它不能被回答(只要你在堆栈溢出规则范围内,你就是)。在这里100%同意你@cybermonkey。别担心,罗斯。哎呀,我的意思是“可以回答”!如果没有问题可以回答(正如我在评论中所说的!),那就没什么好处了。