ITPub博客

首页 > 数据库 > MySQL > PHP操作mysql数据库:[3]4种查询方式

PHP操作mysql数据库:[3]4种查询方式

MySQL 作者:dreamsean 时间:2014-02-10 13:34:00 0 删除 编辑

    本文主要详细讲解如何使用php语言,对mysql数据库进行查询、添加、删除、更新等操作。

工具/原料

  • Macromedia Dreamweaver 8

  • mysql数据库,php语言

一、前言

  1. 1

    在研究php的查询功能是,我觉得很不适应!在asp、asp.net中,查询语句是比较单一的。但是在php语言中提供了四种查询语句,我希望通过这篇文章,给大家答疑!

    END

二、使用mysql_result()获取查询记录集

  1. 1

    定义和用法

    mysql_result() 函数返回结果集中一个字段的值。

    如果成功,则该函数返回字段值。如果失败,则返回 false。

    语法

    mysql_result(data,row,field)

    参数

    描述

    data    必需。规定要使用的结果标识符。该标识符是 mysql_query() 函数返回的。    

    row    必需。规定行号。行号从 0 开始。    

    field    

    可选。规定获取哪个字段。可以是字段偏移值,字段名或 table.fieldname。

    如果该参数未规定,则该函数从指定的行获取第一个字段。

       

    说明

    当作用于很大的结果集时,应该考虑使用能够取得整行的函数。这些函数在一次函数调用中返回了多个单元的内容,比 mysql_result() 快得多。

    此外请注意,在字段参数中指定数字偏移量比指定字段名或者 tablename.fieldname 要快得多。

  2. 2

    代码如下:

    $con = mysql_connect("localhost", "root", "");

    if (!$con)

      {

      die('连接失败: ' . mysql_error());

      }

    else

    {

    $db_selected = mysql_select_db("demosql", $con);

    $sql = "SELECT * from teacher";

    $result = mysql_query($sql,$con);

    echo mysql_result($result,0);

    mysql_close($con);

    }

    ?>

  3. 3

    经验总结:mysql_result()只能够返回一个值,所以应用范围不够广。比较适合用来做统计工作。

    END

三、使用mysql_fetch_row()获取当前行数据

  1. 1

    定义和用法

    mysql_fetch_row() 函数从结果集中取得一行作为数字数组。

    语法

    mysql_fetch_row(data)

    参数

    描述

    data    必需。要使用的数据指针。该数据指针是从 mysql_query() 返回的结果。    

    说明

    mysql_fetch_row() 从和结果标识 data 关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。

    依次调用 mysql_fetch_row() 将返回结果集中的下一行,如果没有更多行则返回 FALSE。

    返回值

    返回根据所取得的行生成的数组,如果没有更多行则返回 false。

  2. 2

    代码如下:

    $con = mysql_connect("localhost", "root", "");

    if (!$con)

      {

      die('连接失败: ' . mysql_error());

      }

    $db_selected = mysql_select_db("demosql",$con);

    $sql = "SELECT * from teacher";

    $result = mysql_query($sql,$con);

    print_r(mysql_fetch_row($result));

    mysql_close($con);

    ?>

  3. 3

    但是,代码显示出来以后结果不是我想要的,因为红框框中是乱码。这是什么原因呢?答案是这是中文乱码。

  4. 4

    解决方案如下:

    在php的代码中增加三行文字

    mysql_query("SET NAMES UTF8");

    mysql_query("set character_set_client=utf8"); 

    mysql_query("set character_set_results=utf8");

    这样,就能保证查询出来的中文不出现乱码了。

  5. 5

    代码修改后的效果如下:

  6. 6

    代码改良:

    上面的代码只能够输出一行数据,有很大的局限性。我们可以将代码进行改良,让它能够输出所有行的数据。

    $con = mysql_connect("localhost", "root", "");

    if (!$con)

      {

      die('连接失败: ' . mysql_error());

      }

    mysql_query("SET NAMES UTF8");

    mysql_query("set character_set_client=utf8"); 

    mysql_query("set character_set_results=utf8");

    $db_selected = mysql_select_db("demosql",$con);

    $sql = "SELECT * from teacher";

    $result = mysql_query($sql,$con);

    while($row=mysql_fetch_row($result))

    {

      echo "编号:".$row[0];

      echo "姓名:".$row[1];

      echo "
    ";

    }

    mysql_close($con);

    ?>

    注:在这个循环中,每一次mysql_fetch_row()都获得当前行数据,并赋值给数组$row,然后自动滑向下一行,在取出最后一行后,函数将返回false,循环结束。

  7. 7

    查询结果如下:

    END

四、使用mysql_fetch_array以数组的返回

  1. 1

    定义和用法

    mysql_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有

    返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。

    语法

    mysql_fetch_array(data,array_type)

    参数

    描述

    data    可选。规定要使用的数据指针。该数据指针是 mysql_query() 函数产生的结果。    

    array_type    

    可选。规定返回哪种结果。可能的值:

    MYSQL_ASSOC - 关联数组MYSQL_NUM - 数字数组MYSQL_BOTH - 默认。同时产生关联和数字数组    

    提示和注释

    注释:mysql_fetch_array() 是 mysql_fetch_row() 的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。

    提示:有很重要的一点必须指出,用 mysql_fetch_array() 并不明显比用 mysql_fetch_row() 慢,而且还明显提供了更多的值。

    注释:本函数返回的字段名是区分大小写的。

  2. 2

    代码如下:

    $con = mysql_connect("localhost", "root", "");

    if (!$con)

      {

      die('连接失败: ' . mysql_error());

      }

    else

    {

    mysql_query("SET NAMES UTF8");

    mysql_query("set character_set_client=utf8"); 

    mysql_query("set character_set_results=utf8");

    $db_selected = mysql_select_db("demosql",$con);

    $sql = "SELECT * from teacher";

    $result = mysql_query($sql,$con);

    print_r(mysql_fetch_array($result));

    mysql_close($con);

    }

    ?>

  3. 3

    输出的结果如下:

  4. 4

    代码输出效果不理想,我们改良一下吧

    $con = mysql_connect("localhost", "root", "");

    if (!$con)

      {

      die('连接失败: ' . mysql_error());

      }

    else

    {

    mysql_query("SET NAMES UTF8");

    mysql_query("set character_set_client=utf8"); 

    mysql_query("set character_set_results=utf8");

    $db_selected = mysql_select_db("demosql",$con);

    $sql = "SELECT * from teacher";

    $result = mysql_query($sql,$con);

    while($row=mysql_fetch_array($result))

    {

      echo "编号:".$row[0]."";

      echo "姓名: ".$row[1]."";

      echo "
    ";

    }

    mysql_close($con);

    }

    ?>

  5. 5

    改良以后的效果:

    END

五、使用mysql_fetch_object以对象返回

  1. 1

    定义和用法

    mysql_fetch_object() 函数从结果集(记录集)中取得一行作为对象。

    若成功的话,本函数从 mysql_query() 获得一行,并返回一个对象。如果失败或没有更多的行,则返回 false。

    语法

    mysql_fetch_object(data)

    参数

    描述

    data    必需。要使用的数据指针。该数据指针是从 mysql_query() 返回的结果。    

    提示和注释

    注释:每个随后对 mysql_fetch_object() 的调用都会返回记录集中的下一行。

    注释:mysql_fetch_object() 与 mysql_fetch_array() 类似,只有一点区别 - 返回的是对象而不是数组。间接地,也意味着只能通过字段名来访问数组,而不是偏移量。

  2. 2

    代码如下:

    $con = mysql_connect("localhost", "root", "");

    if (!$con)

      {

      die('连接失败: ' . mysql_error());

      }

    else

    {

    mysql_query("SET NAMES UTF8");

    mysql_query("set character_set_client=utf8"); 

    mysql_query("set character_set_results=utf8");

    $db_selected = mysql_select_db("demosql",$con);

    $sql = "SELECT * from Teacher";

    $result = mysql_query($sql,$con);

    while ($row = mysql_fetch_object($result))

     {

      echo "编号:".$row->id . "  ";

     echo "姓名:".$row->name . "
    ";

     }

    mysql_close($con);

    }

    ?>

  3. 3

    查询结果如下:

    END

六、小结

  1. 1

    好了,关于这四个函数中的使用方法我已经介绍完了。它们之间的区别在于:

    1、mysql_result():优点是使用方便,缺点是功能少,一次调用一行元素。2、mysql_fetch_row():优点在于执行效率在4种方法中最高,缺点只能用数字做为索引来获取元素。

    3、mysql_fetch_array():优点执行效率很高,并且可以用属性名方式直接获得属性值。

    4、mysql_fetch_object():采用面向对象思想,结构清析!

    在使用的过程中,我觉后3种函数都不错,大家可以根据自己编程的需要,自由选择。因为,它们只是表现形式稍微有些区别,都能够满足我们的需要!

    好了,又解决了一个疑问,希望本文对大家也有所帮助!

    END

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24200509/viewspace-1108966/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-07-06