mysqlitest.php

<?php
//调用数据库的函数
function connetionsql(){
$conn=mysqli_connect("127.0.0.1",'root','','user');
if (!$conn) {
die("连接失败".mysqli_error());
}
mysqli_set_charset($conn,"utf8");
$sql="select * from user1";
$res=mysqli_query($conn,$sql);
// mysqli_affected_rows()返回前一次 MySQL 操作所影响的记录行数。
// $row=mysqli_affected_rows($conn);
// mysqli_num_fields() 返回结果集中字段的数量。
$col=mysqli_num_fields($res);
echo "<table border='1'><tr>";
// 取出字段名作为表名
for ($i=0; $i <$col ; $i++) {
// mysqli_fetch_field_direct() 从结果集中取得某个单一字段的 meta-data,并作为对象返回。
$file_name=mysqli_fetch_field_direct($res,$i);
// echo $file_name->name;
echo "<th>$file_name->name</th>";
}
echo "</tr>";
// mysqli_fetch_row() 从结果集中取得一行,并作为枚举数组返回。
while ($row=mysqli_fetch_row($res)) {
echo "<tr>";
for ($i=0; $i <$col ; $i++) {
echo "<td>$row[$i]</td>";
}
echo "</tr>";
}
echo "</table>";
}
connetionsql();
?>

实现结果:

解析后的html源码:

<table border='1'>
<tr>
<th>id</th><th>name</th><th>password</th><th>email</th><th>age</th>
</tr>
<tr>
<td>4</td><td>huahua</td><td>e10adc3949ba59abbe56e057f20f883e</td><td>huahua@qq.com</td><td>16</td>
</tr>
<tr>
<td>32</td><td>haha</td><td>e10adc3949ba59abbe56e057f20f883e</td><td>test@qq.com</td><td>16</td>
</tr>
<tr>
<td>28</td><td>test</td><td>e10adc3949ba59abbe56e057f20f883e</td><td>test@qq.com</td><td>16</td>
</tr>
<tr>
<td>31</td><td>嘿嘿</td><td>e10adc3949ba59abbe56e057f20f883e</td><td>test@qq.com</td><td>16</td>
</tr>
</table>

下面是在过程中熟悉的mysqli函数:

mysqli_fetch_fields()

        // mysqli_fetch_fields()    返回结果中代表字段的对象的数组。
$field_info=mysqli_fetch_fields($res);
var_dump($field_info);
//返回的是一个二位数组,如下:
// array(5) {
// [0]=> object(stdClass)#3 (13)
// { ["name"]=> string(2) "id"
// ["orgname"]=> string(2) "id"
// ["table"]=> string(5) "user1"
// ["orgtable"]=> string(5) "user1"
// ["def"]=> string(0) ""
// ["db"]=> string(4) "user"
// ["catalog"]=> string(3) "def"
// ["max_length"]=> int(2)
// ["length"]=> int(11)
// ["charsetnr"]=> int(63)
// ["flags"]=> int(49667)
// ["type"]=> int(3)
// ["decimals"]=> int(0)
// }
foreach ($field_info as $key =>$value) {
// echo "<br/>".$val->name;
echo "<br/>.-----";
echo $key;
echo "=========";
echo $value->name;
}

结果:

//数字为下标
.-----0=========id
.-----1=========name
.-----2=========password
.-----3=========email
.-----4=========age

mysqli_fetch_field()

        // mysqli_fetch_field() 函数从结果集中取得下一字段(列),并作为对象返回。
while ($field_info=mysqli_fetch_field($res)) {
echo "<br/>".$field_info->name;
}

结果:

id
name
password
email
age

【二十一】基于mysqli的表格数据练习的更多相关文章

  1. 基于bootstrap的表格数据展示

    一.导入bootstrap文件 二.前端html代码 对应的是前台条件查询和js数据获取 js数据获取部分在第四段 三.后台数据 total为集合总数  int类型 rows为前台需要展示的数据集合 ...

  2. JavaWeb学习 (二十一)————基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  3. 学习Spring Boot:(二十一)使用 EhCache 实现数据缓存

    前言 当多次查询数据库影响到系统性能的时候,可以考虑使用缓存,来解决数据访问新能的问题. SpringBoot 已经为我们提供了自动配置多个 CacheManager 的实现,只要去实现使用它就可以了 ...

  4. 用Vue来实现音乐播放器(二十一):歌手详情数据抓取

    第一步:在api文件夹下的singer.js中抛出getSingerDetail方法 第二步:在singer-detail.vue组件中引入api文件夹下的singer.js和config.js 第三 ...

  5. 云计算设计模式(二十一)——Sharding分片模式

    云计算设计模式(二十一)——Sharding分片模式 将一个数据存储到一组水平分区或碎片.存储和访问大量数据时,这个模式可以提高可扩展性. 背景和问题 由一个单一的服务器托管的数据存储区可能会受到以下 ...

  6. 获取表格数据转换为JSON字符串

    核心代码JavaScript代码: 方法一 function sc () { var myTable=document.getElementById("myTable"); //获 ...

  7. 二十一、contextMap中放的常用数据

    二十一.contextMap中放的常用数据 request:请求范围的数据.即ServletRequest中的那个Map parameters:请求参数的数据.即request.getParamete ...

  8. 从壹开始微服务 [ DDD ] 之十一 ║ 基于源码分析,命令分发的过程(二)

    缘起 哈喽小伙伴周三好,老张又来啦,DDD领域驱动设计的第二个D也快说完了,下一个系列我也在考虑之中,是 Id4 还是 Dockers 还没有想好,甚至昨天我还想,下一步是不是可以写一个简单的Angu ...

  9. FreeSql (二十一)查询返回数据

    FreeSql 采用 ExpressionTree 优化读取速读,如果懂技术的你一定知道 .NETCore 技术下除了原生代码,最快就是 Emit 和 ExpressionTree. 项目在初期使用的 ...

随机推荐

  1. ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十三节--RBAC模式及ABP权限管理(附送福利)

    ABP+AdminLTE+Bootstrap Table权限管理系统一期 Github:https://github.com/Jimmey-Jiang/ABP-ASP.NET-Boilerplate- ...

  2. vue+node+webpack搭建环境

    一.环境搭建 1.1.去官网安装node.js( http://www.runoob.com/nodejs/nodejs-install-setup.html  ) 注意node的版本,只有支持和谐模 ...

  3. app打包常用操作

    1.修改appId android:打开build.gradle文件 找到defaultConfig{applicationId 'ceshi'} 修改测试.android studio会提示. Gr ...

  4. cocos2dx3.2移植android

    LOCAL_PATH := $(call my-dir)LOCAL_MYDIR = $(LOCAL_PATH)/../../Classesinclude $(CLEAR_VARS) $(call im ...

  5. .net 系列:并发编程之一 并发编程的初步理论

    一.关于并发编程的几个误解 1)并发就是多线程 实际上多线程只是并发编程的一种形式而已,在C#中还有很多其他的并发编程技术,包括异步编程,并行编程,TPL数据流,响应式编程等.  2)只有大型服务器才 ...

  6. JavaScript学习心得

    javaScript十分的强大,所以自然而然学起来也是不易的,想要掌握它的核心,把它理解透更是不易的,但只要你能够静下心来,耐心的去钻研,学习,还是可以把它给学好的,加油吧! 下面是一些JavaScr ...

  7. 51Nod 1001 数组中和等于K的数对 Set

    给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0 ...

  8. fiddler+android抓包工具配置使用

    今天临时增加一个工作,手机需要抓包,查看了不同的抓包工具,最后确定使用fiddler抓包工具进行操作,这里以android为例记录一下工具的配置和使用操作. fiddler的安装 网上有很多fiddl ...

  9. C# Winform 实现Ajax效果自定义按钮

    技术看点 WinForm自定义控件的使用 自定义控件gif动画的播放 需求及效果 又来一波 C# GDI自定义控件show .这个控件已经使用几年了,最近找出来重构一下.原来是没有边框的,那么导致导航 ...

  10. 使用js做创建图片及删除图片 若有什么不对或不完整的地方,请大家提出来,谢谢

    首先我们要在<body>中创建一个按钮<button>来用作点击创建图片,在<button>中写一个点击事件(随便命名), 在创建一个<div>存放图片 ...