找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3403|回复: 5

[求助] php数据库查询输出数据

[复制链接]
发表于 2017-2-11 16:26:14 | 显示全部楼层 |阅读模式 来自 山西省临汾市
本次悬赏总金额:100 金币 | 剩余悬赏金额:100 金币
本次悬赏到期时间: 本悬赏贴永不过期。
快来加入[悬赏团队],每次获得楼主奖励时可获得系统额外20金币的系统奖励。

只允许悬赏会员本人发放悬赏金币 | 只允许悬赏会员本人收回悬赏金币 | 最多悬赏人数:10人
还没有会员获得悬赏奖励,加油,快来争头奖!

本帖最后由 yunabc 于 2017-2-11 17:35 编辑
  1. <?php
  2.         session_start();
  3.         error_reporting(0);
  4.         header("Content-type: text/html; charset=utf-8");
  5.         require "config.php";
  6.         @date_default_timezone_set(PRC);
  7.         set_time_limit(0);
  8.         @ob_end_clean();
  9.         ob_implicit_flush(true);
  10.         switch($_GET['act']){
  11.                 case "database":
  12.                         if(empty($_SESSION['member'])){
  13.                                 exit('var database=new Array("login");');
  14.                         }
  15.                         $connect_db = mysql_connect($dbnhost, $dbnuser, $dbnpass);
  16.                         $select_db = mysql_select_db($dbname, $connect_db);
  17.                         mysql_query("SET NAMES 'UTF8'");
  18.                         mysql_query("SET CHARACTER SET UTF8");
  19.                 mysql_query("SET CHARACTER_SET_RESULTS=UTF8");
  20.                         $rs = mysql_query("SHOW TABLES FROM $dbname");
  21.                         $tables = array();
  22.                         while ($row = mysql_fetch_row($rs)) {
  23.                                 $tables[] = $row[0];
  24.                         }
  25.                         mysql_free_result($rs);
  26.                         $array_tj=count($tables);
  27.                         $count=1;
  28.                         $text="";
  29.                         foreach($tables as  $key=>$tableName){
  30.                                 if($key==count($tables)-1){
  31.                                         $dian="";
  32.                                 }else{
  33.                                         $dian=",";
  34.                                 }
  35.                                 $text=$text.'"'.$tableName.'"'.$dian;
  36.                                 $count++;
  37.                         }
  38.                 echo "var database = new Array($text);";        
  39.                 break;
  40.                 case "select":
  41.                         if(empty($_SESSION['member'])){
  42.                                         echo "cnrv_msg("请登录");addRow("登录后查询","登录后查询","登录后查询","登录后查询","登录后查询");";
  43.                                         exit;
  44.                                        
  45.                         }
  46.                         $select_act=(int)addslashes(trim($_POST['select_act']));
  47.                         $match_act=(int)addslashes(trim($_POST['match_act']));
  48.                         $key=addslashes(trim($_POST['key']));
  49.                         $table=addslashes(trim($_POST['table']));
  50.                                 if(empty($key) || $key==''){exit("请输入查询内容");}
  51.                                 if(strlen($key)<4){exit("key length!!!");}
  52.                                 
  53.                                         $key = str_replace("_","\_",$key);
  54.                                         $key = str_replace("%","\%",$key);
  55.                                                 switch($match_act){
  56.                                                         case 2:$key = '=\''.$key.'\'';break;
  57.                                                         case 1:$key = ' like \''.$key.'%\'';break;
  58.                                                         default:exit("???");
  59.                                                 }
  60.                                                 switch($select_act){//查询方式
  61.                                                         case 1:$limits="username".$key;break;
  62.                                                         case 2:$limits="email".$key;break;
  63.                                                         case 3:$limits="username".$key."or email".$key."or source".$key;break;
  64.                                                         default:exit("???");
  65.                                                 }
  66.                                                     $connect_db = mysql_connect($dbnhost, $dbnuser, $dbnpass);
  67.                                                         $select_db = mysql_select_db($dbname, $connect_db);
  68.                                                         mysql_query("SET NAMES 'UTF8'");
  69.                                                         mysql_query("SET CHARACTER SET UTF8");
  70.                                 mysql_query("SET CHARACTER_SET_RESULTS=UTF8");
  71.                                                 $sql="select $Field  from `$table` where $limits LIMIT 30";
  72.                                                 require "database.php";
  73.                                                         $databasename=database($table);
  74.                                                         if($result=mysql_query($sql)){
  75.                                                                 while($rows=mysql_fetch_assoc($result)){
  76.                                                                                 $username= mysql_real_escape_string($rows['username']);
  77.                                                                                 $email= mysql_real_escape_string($rows['email']);
  78.                                                                                 $password= mysql_real_escape_string($rows['password']);
  79.                                                                                 $source= mysql_real_escape_string($rows['source']);
  80.                                                                                 $log= mysql_real_escape_string($rows['log']);
  81.                                                                                 echo "addRow("$username","$email","$password","$source","$log");";
  82.                                                                 }// end while
  83.                                                         }
  84.                                        
  85.                
  86.                
  87.                
  88.                 break;
  89.                 default:print_r("???");
  90.         }
  91.         
复制代码
这个是输出的代码,我的数据库本来准备输出5组数据,或者6组数,但是只能输出前4组,到了第5组就不显示
  1.                                                                 while($rows=mysql_fetch_assoc($result)){
  2.                                                                                 $username= mysql_real_escape_string($rows['username']);
  3.                                                                                 $email= mysql_real_escape_string($rows['email']);
  4.                                                                                 $password= mysql_real_escape_string($rows['password']);
  5.                                                                                 $source= mysql_real_escape_string($rows['source']);
  6.                                                                                 $log= mysql_real_escape_string($rows['log']);
  7.                                                                                 $nice= mysql_real_escape_string($rows['nice']);
  8.                                                                                 echo "addRow("$username","$email","$password","$log","$source","$nice");";
  9.                                                                 }// end while
复制代码
数据输出是正常的,最后两个数据替换了都是可以单个输出的,但是一超过4组就并不显示第5组了,小白,网上找的代码,人家本来是三组,我加的,求大神修改显示后边的数据

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-2-11 17:17:07 | 显示全部楼层 来自 河南省郑州市
这个是什么检索插件吗?怎么看业务逻辑不像是一般网站上能用到的啊,还进行匹配或者搜索,不过从代码分析上你得搞清楚你所谓“输出的x组数据”是哪一个输出的,你拆解一下代码就可以看懂了,我拆解的如下
  1. switch($_GET['act']){
  2.                 case "database":
  3.                        。。。。。
  4.                 echo "var database = new Array($text);";    // 这里会输出一些数组   
  5.                 break;
  6.                 case "select":
  7.                         ..........
  8.                                         echo "addRow("$username","$email","$password","$source","$log");"; // 这里是输出的字符串
  9.                                                                 }// end while
  10.                                                         }
  11.                 break;
  12.                 default:print_r("???"); // 这里输出的是三个问号
  13.         }
复制代码
然后你再根据的你情况输出的数据是哪个地方输出的,然后再找为什么业务逻辑没有实现,这端代码整体都是跟数据库打交道的,对数据库进行匹配或者查询并且输出指定的内容,具体实现场景根据你的业务逻辑来。

评分

参与人数 2金币 +103 收起 理由
天外飘仙 + 100 很给力!
抢楼评分专号 + 3 很幸运,你获得了抢楼奖励!

查看全部评分

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

 楼主| 发表于 2017-2-11 17:19:40 | 显示全部楼层 来自 山西省临汾市
newlive 发表于 2017-2-11 17:17
这个是什么检索插件吗?怎么看业务逻辑不像是一般网站上能用到的啊,还进行匹配或者搜索,不过从代码分析上 ...
  1.                                                         if($result=mysql_query($sql)){
  2.                                                                 while($rows=mysql_fetch_assoc($result)){
  3.                                                                                 $username= mysql_real_escape_string($rows['username']);
  4.                                                                                 $email= mysql_real_escape_string($rows['email']);
  5.                                                                                 $password= mysql_real_escape_string($rows['password']);
  6.                                                                                 $source= mysql_real_escape_string($rows['source']);
  7.                                                                                 $log= mysql_real_escape_string($rows['log']);
  8.                                                                                 $nice= mysql_real_escape_string($rows['nice']);
  9.                                                                                 echo "addRow("$username","$email","$password","$log","$source","$nice");";
  10.                                                                 }// end while
  11.                                                         }
复制代码
z最后这段查询数据库输出的,应该是输出6组数据,但是无论如何只能显示4组

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

发表于 2017-2-13 14:56:36 | 显示全部楼层 来自 河南省郑州市
本帖最后由 newlive 于 2017-2-13 14:58 编辑
yunabc 发表于 2017-2-11 17:19
z最后这段查询数据库输出的,应该是输出6组数据,但是无论如何只能显示4组

先不要急于看输出几组数据,你先理清楚是哪个地方输出的再说,这个跟数据库打交道的,前面的代码都是在进行判断后输出的。跟数据库打交道不要说是应该怎样怎样,而是为什么怎样怎样,如果你的数据表本来就只建立了四个字段,就是大神来了也不能让他输出六个字段值!'log''nice你数据表里有nice和log这两个字段吗???

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

 楼主| 发表于 2017-2-13 21:31:21 | 显示全部楼层 来自 山西省临汾市
newlive 发表于 2017-2-13 14:56
先不要急于看输出几组数据,你先理清楚是哪个地方输出的再说,这个跟数据库打交道的,前面的代码都是在进 ...

有的,数据库每个数据单独输出都是现实的,就是用那个代码只能输出4个,多了就不显示了

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

发表于 2017-2-17 11:45:42 | 显示全部楼层 来自 河南省许昌市
yunabc 发表于 2017-2-13 21:31
有的,数据库每个数据单独输出都是现实的,就是用那个代码只能输出4个,多了就不显示了

具体方法已经交给你了,学习编程不要依赖别人帮你排错,自己不动脑筋是学不会的,这个错误很明显,如果你根据我跟你说的方法,你肯定能找到,祝好运!ps:谁也没有义务去帮你解决问题,何况大家都这么忙

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-4-20 03:50 , Processed in 0.051829 second(s), 15 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表