精华内容
下载资源
问答
  • Mysqlmysql_store_result/mysql_use_result,mysql_field_count/mysql_num_fields/mysql_num_rows函数...
    2020-09-28 19:56:13

    Mysql的mysql_store_result/mysql_use_result,mysql_field_count/mysql_num_fields/mysql_num_rows函数区别

    1 先参考以下文章,或者先看下面再回来理解
    mysql_use_result()的用法实例
    mysql_store_result()返回NULL的情况
    mysql_num_fields与mysql_field_count的区别

    2 总结

    /*
    1.
    mysql_field_count,mysql_num_fields可认为一样,都返回字段值;只不过后者必须要有mysql_store_result/mysql_use_result的返回值MYSQL_RES支撑执行
    mysql_num_rows:返回真实的行数.同样需要MYSQL_RES支撑执行.
    三者区别:
    1)执行insert,update,detele时,mysql_store_result/mysql_use_result无返回值(不会返回字段),.'.mysql_field_count=0,mysql_num_fields和
    mysql_num_rows更不用说了,无参数(NULL)根本无法执行;
    2)执行select,show等语句时:由于mysql_store_result/mysql_use_result必会返回字段值, .'.mysql_field_count必然会等于mysql_num_fields;
    而mysql_num_rows等于真实的值,范围为[0,n],可以是0
    总结:以上的判断均是依靠条件:1)执行的语句;2)mysql_store_result/mysql_use_result返回值判断
    
    2.
    mysql_store_result()返回NULL的情况:
    1)有一个malloc()失败(例如,如果结果集合太大)。
    2)数据不能被读取(发生在连接上的一个错误)。
    3)查询没有返回数据(例如,它是一个INSERT、UPDATE或DELETE).
    解决:可用mysql_field_count() == 0,为0则证明正常;否则出错打印mysql_error(&mysql).(只针对NULL的情况)
    
    mysql_store_result()不为NULL的情况:
    1)执行select,行数为空,列数必不为空;即执行select后,mysql_store_result必不为空.show同理
    2)正常执行sql语句的返回结果
    */
    
    更多相关内容
  • mysql_num_fieldsmysql_field_count都是获取结果中列的个数,但是这两个函数在使用的时候是存在区别的。先看一段代码(上篇文章提供的数据库):#include #include #include #include intmain(){charout[100];MYSQL ...

    mysql_num_fields和mysql_field_count都是获取结果中列的个数,但是这两个函数在使用的时候是存在区别的。

    先看一段代码(上篇文章提供的数据库):

    #include

    #include

    #include

    #include

    intmain()

    {

    charout[100];

    MYSQL mysql;

    MYSQL_RES* res;

    intnum_fields;

    intcount_fields;

    intnum_rows;

    mysql_init(&mysql);

    mysql_real_connect(&mysql,NULL,"root","123","ta",0,NULL,0);

    fprintf(stdout,"--insert------------------------/n");

    mysql_real_query(&mysql,"INSERT INTO t1 VALUES(6,'n6')",29);

    count_fields = mysql_field_count(&mysql);

    sprintf(out,"insert----count_fields is %d/n",count_fields);

    fprintf(stdout,out);

    res = mysql_store_result(&mysql);

    if(res == NULL)

    {

    fprintf(stdout,"insert---store return null/n");

    }

    else

    {

    num_fields = mysql_num_fields(res);

    sprintf(out,"insert---num_fields is %d/n",num_fields);

    fprintf(stdout,out);

    }

    fprintf(stdout,"---select-----------/n");

    mysql_real_query(&mysql,"SELECT * FROM t1",16);

    count_fields = mysql_field_count(&mysql);

    sprintf(out,"select---count_fields is %d/n",count_fields);

    fprintf(stdout,out);

    res = mysql_store_result(&mysql);

    if(res == NULL)

    {

    fprintf(stdout,"select---store return null/n");

    }

    else

    {

    num_fields = mysql_num_fields(res);

    sprintf(out,"select---num_fields is %d/n",num_fields);

    fprintf(stdout,out);

    num_rows = mysql_num_rows(res);

    sprintf(out,"select---num_rows is %d/n",num_rows);

    fprintf(stdout,out);

    }

    fprintf(stdout,"---select 0------/n");

    mysql_real_query(&mysql,"SELECT * FROM t1 where id = 10",30);

    count_fields = mysql_field_count(&mysql);

    sprintf(out,"select 0---count_fields is %d/n",count_fields);

    fprintf(stdout,out);

    res = mysql_store_result(&mysql);

    if(res == NULL)

    {

    fprintf(stdout,"select 0---store return null/n");

    }

    else

    {

    num_fields = mysql_num_fields(res);

    sprintf(out,"select 0---num_fields is %d/n",num_fields);

    fprintf(stdout,out);

    num_rows = mysql_num_rows(res);

    sprintf(out,"select 0---num_rows is %d/n",num_rows);

    fprintf(stdout,out);

    }

    mysql_free_result(res);

    mysql_close(&mysql);

    exit(0);

    }

    #include

    #include

    #include

    #include

    int main()

    {

    char out[100];

    MYSQL mysql;

    MYSQL_RES* res;

    int num_fields;

    int count_fields;

    int num_rows;

    mysql_init(&mysql);

    mysql_real_connect(&mysql,NULL,"root","123","ta",0,NULL,0);

    fprintf(stdout,"--insert------------------------/n");

    mysql_real_query(&mysql,"INSERT INTO t1 VALUES(6,'n6')",29);

    count_fields = mysql_field_count(&mysql);

    sprintf(out,"insert----count_fields is %d/n",count_fields);

    fprintf(stdout,out);

    res = mysql_store_result(&mysql);

    if(res == NULL)

    {

    fprintf(stdout,"insert---store return null/n");

    }

    else

    {

    num_fields = mysql_num_fields(res);

    sprintf(out,"insert---num_fields is %d/n",num_fields);

    fprintf(stdout,out);

    }

    fprintf(stdout,"---select-----------/n");

    mysql_real_query(&mysql,"SELECT * FROM t1",16);

    count_fields = mysql_field_count(&mysql);

    sprintf(out,"select---count_fields is %d/n",count_fields);

    fprintf(stdout,out);

    res = mysql_store_result(&mysql);

    if(res == NULL)

    {

    fprintf(stdout,"select---store return null/n");

    }

    else

    {

    num_fields = mysql_num_fields(res);

    sprintf(out,"select---num_fields is %d/n",num_fields);

    fprintf(stdout,out);

    num_rows = mysql_num_rows(res);

    sprintf(out,"select---num_rows is %d/n",num_rows);

    fprintf(stdout,out);

    }

    fprintf(stdout,"---select 0------/n");

    mysql_real_query(&mysql,"SELECT * FROM t1 where id = 10",30);

    count_fields = mysql_field_count(&mysql);

    sprintf(out,"select 0---count_fields is %d/n",count_fields);

    fprintf(stdout,out);

    res = mysql_store_result(&mysql);

    if(res == NULL)

    {

    fprintf(stdout,"select 0---store return null/n");

    }

    else

    {

    num_fields = mysql_num_fields(res);

    sprintf(out,"select 0---num_fields is %d/n",num_fields);

    fprintf(stdout,out);

    num_rows = mysql_num_rows(res);

    sprintf(out,"select 0---num_rows is %d/n",num_rows);

    fprintf(stdout,out);

    }

    mysql_free_result(res);

    mysql_close(&mysql);

    exit(0);

    }

    执行结果是:

    --insert------------------------

    insert----count_fields is 0

    insert---store return null

    ---select-----------

    select---count_fields is 2

    select---num_fields is 2

    select---num_rows is 7

    ---select 0------

    select 0---count_fields is 2

    select 0---num_fields is 2

    select 0---num_rows is 0

    显然,当执行insert语句的时候,是没有结果返回的,因此列的个数为0,且mysql_store_result返回NULL。因此可以通过mysql_field_count()是否返回0来判断是否有结果返回,而不需要执行mysql_store_result来判断是否返回了NULL。我想,mysql_field_count()的效率肯定要比mysql_store_result()高。

    在这种情况下,由于没有返回结果,因此mysql_store_result()返回NULL,也就是得不到res指针,于是mysql_num_fields()函数就无法执行,缺少必要的参数。

    当执行第一条select语句的时候,返回了结果,因此mysql_field_count()和mysql_num_fields()都返回了正确的列的个数2,mysql_num_rows()返回了记录的条数7.

    当执行第二条select语句,由于表中没有 id = 0 的记录,因此mysql_num_rows返回了0表示记录数为0,但是,我们发现mysql_store_result()并没有返回NULL,mysql_num_fields()和mysql_field_count()还是返回了2.

    因此我们可以得出这样的结论:

    执行结果有三种情况,第一是执行insert、update和delete这样的语句的时候,是不会有任何内容返回,因此mysql_store_result()会返回一个NULL。第二,执行select或show这样的语句时,一定会有内容返回,可以取得列信息,但是记录可以为0,也可以不为0。这就像一个表,表头一定存在,但是表中可以没有数据。

    另外:

    mysql_affected_rows()函数的作用是,当执行update  insert  delete 时,返回影响的行数。

    mysql中文文档:

    展开全文
  • 先大概讲解一下这两个行数的基本使用规则...mysql_num_fields()函数获取查询结果集的列数目(即有多少列),该函数同mysql_num_rows一样,也需要接受一个执行mysql_query所返回的资源标识符。mysql_num_rows()与mysql...

    先大概讲解一下这两个行数的基本使用规则:

    mysql_num_rows()函数获取查询结果集的行数目(即总行数),该函数需要接受一个执行mysql_query所返回的资源标识符。

    mysql_num_fields()函数获取查询结果集的列数目(即有多少列),该函数同mysql_num_rows一样,也需要接受一个执行mysql_query所返回的资源标识符。

    mysql_num_rows()与mysql_num_fields()实例

    比如现在有这样一个表,表结构和表数据如下图:

    c2e8d641822bd0d4f8dca72c853245c4.png

    现在分别用mysql_num_rows()与mysql_num_fields()计算结果集的总行数和总列数。

    mysql_connect("localhost","root","");

    mysql_select_db("test");

    $sql = "SELECT student_id,student_name FROM student";

    /* http://www.manongjc.com/article/1235.html */

    $rs = mysql_query($sql);

    echo "结果集一共有".mysql_num_fields($rs)."列
    ";

    echo "结果集一共有".mysql_num_rows($rs)."条数据
    ";

    ?>

    输出结果为:

    结果集一共有2列

    结果集一共有10条数据

    因为我们值查询了student_id和student_name两个字段,所以mysql_num_fields($rs)返回2列

    而且我们查询的时候没有使用任何where过滤条件,所以mysql_num_rows($rs)返回10行。

    展开全文
  • 1. $row = mysql_fetch_row($result); 返回一个规则的数组$... mysql_num_fields($result) 返回结果的元素个数。 2. $row = mysql_fetch_array($result); 返回一个数组$row. 举例如下: 表结构如下: username | pas...

    1. $row = mysql_fetch_row($result); 返回一个规则的数组$row,$row[0]是第一个元素,$row[1]是第二个元素,依次类推... mysql_num_fields($result) 返回结果的元素个数。 2. $row = mysql_fetch_array($result); 返回一个数组$row. 举例如下: 表结构如下: username | password ------------------------------------- bourbon | abc berber | efg 第一次运行运行 $row = mysql_fetch_array($result) 则结果如下: $row[0] = $row["username"] = "bourbon" $row[1] = $row["password"] = "abc" 第一次运行运

    简介:Nine Million Bicycles:Nine Million Bicycles php访问查询mysql数据的三种方法:1. $row = mysql_fetch_row($result); 返回一个规则的数组$row,$row[0]是第一个元素,$row[1]是第二个元素,依次类推... mysql_num_fields($result) 返回结果的元素个数。 2. $row = mysql_fetch_array($result); 返回一个数组$row. 举例如下: 表结构如下:

    简介:php访问查询mysql数据的三种方法。1. $row = mysql_fetch_row($result); 返回一个规则的数组$row,$row[0]是第一个元素,$row[1]是第二个元素,依次类推... mysql_num_fields($result) 返回结果的元素

    简介:PHP获取字段数目实现技巧讲解。我们通过对 mysql_num_fields()函数可以将要查询的表内所有字段的数目统计出来,该函数的语法格式如下: int mysql_num_fields ( resource $result ) 其

    简介:php获取字段名示例分享。复制代码 代码如下: ?php $link = mysql_connect('localhost', 'username', 'password'); $fields = mysql_list_fields("database", "table", $link); $columns = mysql_num_fields($fi

    简介:在php中 取得mysql 列信息的两种方法。1、使用mysql_fetch_field $query=$db->query(" SELECT * FROM $tablename limit 1"); $num=mysql_num_fields($query); for($i=0;$i { $f_db=mysql_fetch_field($query,$i); $showdb[]=$f_db

    简介:在php中取得mysql列信息的两种方法。1、使用mysql_fetch_field $query=$db-query( SELECT * FROM $tablename limit 1); $num=mysql_num_fields($query); for($i=0;$i$num;$i++) { $f_db=mysql_fetch_field($query,$i); $showdb[

    简介:求正确写法直接看代码:PHP code

    while ($row=mysql_fetch_row($result))

    {

    for ($i=0; $i

    {

    echo '

    简介:PHP获取字段数目实现技巧讲解。我们通过对 mysql_num_fields()函数可以将要查询的表内所有字段的数目统计出来,该函数的语法格式如下: int mysql_num_fields ( resource $result ) 其

    简介:取mysql字段注释问题<?phpinclude ("conn.php"); $query="select * from menu"; $result = mysql_query($query); for($i=0;$i

    【相关问答推荐】:

    展开全文
  • 1. $row = mysql_fetch_row($result); 返回一个规则的数组$... mysql_num_fields($result) 返回结果的元素个数。 2. $row = mysql_fetch_array($result); 返回一个数组$row. 举例如下: 表结构如下: username | pas...
  • mysql_num_fields

    2021-01-19 11:14:29
    $fields=mysql_num_fields($result); echo " for ($i=0; $i < mysql_num_fields($result); $i++) //Table Header { print " echo " while ($row = mysql_fetch_row($result)) { //Table body echo...
  •  $conn=mysql_connect('localhost','root','123456');  mysql_set_charset("utf8"); //设置连接编码  // mysql_select_db('db1'); //选择数据库  $sql="show databases;"; //sql执行的语句  $result=my
  • mysql_num_fieldsmysql_field_count的区别

    万次阅读 2010-12-16 15:09:00
    通过mysql_num_fieldsmysql_field_count的区别反映出sql语句执行的结果的形态。
  • mysql_num_fields() 首先本人只能表示MySQL官方翻译网站真的坑,我是一枚学习MySQL的小白,看了很多其他人的博客,明明这个函数是返回结果集中列的个数,为什么这个网站说是返回行数了? 因为是官译网站,我就相对于...
  • $name=$_POST['username'];$pwd=$_POST['password...$con=mysql_connect("localhost","root","123456");mysql_select_db("leelogin_db",$con);if($name&&$pwd){$sql="SELECT * FROM lee_tb WHERE username='...
  • mysql_init初始化数据库链接–得到一个链接 mysql_real_connect连接数据库服务器 执行mysql_query查询–...获取表头信息–mysql_fetch_fields–表头信息存储在MYSQL_FIELD类型的指针指向的内存空间 解析表头–mysql_...
  • mysql_num_fields($data) 函数返回结果集中字段的数。 $con = mysql_connect("localhost", "hello", "321"); if (!$con) { die('Could not connect: ' . mysql_error()); }$db_selected = mysql_select_db("test_...
  • mysql_affected_rows -- 取得前一次 MySQL 操作所影响的记录行数mysql_num_rows -- 函数返回结果集中行的数目。config.php1
  • C++操作MySQL

    2021-01-19 23:56:14
    声明:本文内容纯属博主自己查找和归纳的个人所需的知识点,仅作...Windows版本:将libmysql.dll、libmysql.lib、mysql.h复制粘贴到项目文件中,或者项目设置里的包含目录和库目录添加路径#include #include#incl...
  • cout << mysql_num_fields(result) ; for(int i=0; i ; ++i) { // 获取下一行 row = mysql_fetch_row(result); if(row ) { break; } // mysql_num_fields()返回结果集中的字段数 for(int j=...
  • C++操作mySql数据库

    2021-02-05 09:17:43
    1 #include 2 #include 3 #include 4 #include 5 using ...67 intmainconnectMysql()8 {9 //必备的一个数据结构10 MYSQL mydata;1112 //初始化数据库13 if (0 == mysql_library_init(0, NULL, NULL))14 {15 ...
  • [导读]mysql_fetch_field函数从结果集中取得列信息并作为对象返回。php mysql_fetch_field() 函数定义和用法mysql_fetch_field() 函数从结果集中取得列信息并作为对象返回。mysql_fetch_field() 可以用来从查询...
  • 在ubuntu系统安装了mysql后,通过调用mysql API,进行数据...int rc, i, fields;int rows;if (NULL == mysql_init(&stMysql)){fprintf(stderr, "mysql init error:%s\n", mysql_error(&stMysql));return MY...
  • 链接器里的常规里的附加库目录,路径有没有添加对,一般是C:\Program Files\MySQL\MySQL Server 5.6\lib 还是不行,可能是位数的原因,我系统是64位的,安装的mysql也是64位的,但是工程是32位的,所以可以改安装32...
  • php mysqli_num_fields函数用于返回结果集中字段(列)的数量,其语法是mysqli_num_fields(result),参数result必需,指规定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果集标识符。...
  • Warning:mysql_num_rows() expects parameter 1 to be resource,boolean given in F:.....\db_func.php online3 应该先判断是否有,用如下代码 ...return mysql_num_rows($res); }else{ return fa
  • C语言常用MySQL API函数

    千次阅读 2020-08-14 22:50:21
    常用APImysql_init()mysql_real_connect()mysql_close()mysql_num_fields()mysql_fetch_fields()mysql_fetch_row()mysql_query()mysql_store_result()mysql_free_result()常用结构体MYSQLMYSQL_RESMYSQL_ROWMYSQL_...
  • 导致出现这个错误的原因很可能是你的php版本的不同导致的: 只需要在mysql_num_rows($result)使用外层加上if($result){ }就可以了;
  • $intNumField = mysql_num_fields($objQuery); $resultArray = array(); while($obResult = mysql_fetch_array($objQuery)) { $arrCol = array(); for($i=0;$i<$intNumField;$i++) { $arrCol[mysql_field...
  • MySql接口API相关函数MySql接口API相关函数1、部分API函数总览1.1、部分API函数表1.2、部分MySql结构体说明1.3、API函数使用步骤2、mysql_init()——MYSQL对象初始化2.1、函数原型及参数说明2.2、简单使用3、mysql_...
  • mysqli_num_fields() 函数

    2019-04-10 07:40:49
    查看更多 https://www.yuque.com/docs/share/2f020516-f15e-4e5a-ab31-2be6b2f1371e
  • Windows版本:将libmysql.dll、libmysql.lib、mysql.h复制粘贴到项目文件中,或者项目设置里的包含目录和库目录添加路径#include #include#include "winsock.h"#include "mysql.h"#pragma comment(lib,"libmySQL.lib...
  • https://blog.csdn.net/linux_ever/article/details/50651513 一: 分配或初始化与mysql_real_connect()相适应的MYSQL对象。用mysql_init()函数。 MYSQL *mysql_init(MYSQL...
  • PHP mysqli_num_fields() 函数返回结果集中字段(列)的数量:// 假定数据库用户名:root,密码:123456,数据库:RUNOOB$con=mysqli_connect("localhost","root","123456","RUNOOB");if (mysqli_connect_errno($con))...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,241
精华内容 7,696
关键字:

mysql_num_fields

mysql 订阅