本文主要详细讲解如何使用php语言,对mysql数据库进行查询、添加、删除、更新等操作。
首页 > 数据库 > MySQL > PHP操作mysql数据库:[3]4种查询方式
本文主要详细讲解如何使用php语言,对mysql数据库进行查询、添加、删除、更新等操作。
定义和用法
mysql_result() 函数返回结果集中一个字段的值。
如果成功,则该函数返回字段值。如果失败,则返回 false。
语法
mysql_result(data,row,field)
参数
描述
data 必需。规定要使用的结果标识符。该标识符是 mysql_query() 函数返回的。
row 必需。规定行号。行号从 0 开始。
field
可选。规定获取哪个字段。可以是字段偏移值,字段名或 table.fieldname。
如果该参数未规定,则该函数从指定的行获取第一个字段。
说明
当作用于很大的结果集时,应该考虑使用能够取得整行的函数。这些函数在一次函数调用中返回了多个单元的内容,比 mysql_result() 快得多。
此外请注意,在字段参数中指定数字偏移量比指定字段名或者 tablename.fieldname 要快得多。
代码如下:
$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);
}
?>
经验总结:mysql_result()只能够返回一个值,所以应用范围不够广。比较适合用来做统计工作。
定义和用法
mysql_fetch_row() 函数从结果集中取得一行作为数字数组。
语法
mysql_fetch_row(data)
参数
描述
data 必需。要使用的数据指针。该数据指针是从 mysql_query() 返回的结果。
说明
mysql_fetch_row() 从和结果标识 data 关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。
依次调用 mysql_fetch_row() 将返回结果集中的下一行,如果没有更多行则返回 FALSE。
返回值
返回根据所取得的行生成的数组,如果没有更多行则返回 false。
代码如下:
$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);
?>
但是,代码显示出来以后结果不是我想要的,因为红框框中是乱码。这是什么原因呢?答案是这是中文乱码。
解决方案如下:
在php的代码中增加三行文字
mysql_query("SET NAMES UTF8");
mysql_query("set character_set_client=utf8");
mysql_query("set character_set_results=utf8");
这样,就能保证查询出来的中文不出现乱码了。
代码修改后的效果如下:
代码改良:
上面的代码只能够输出一行数据,有很大的局限性。我们可以将代码进行改良,让它能够输出所有行的数据。
$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,循环结束。
查询结果如下:
定义和用法
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() 慢,而且还明显提供了更多的值。
注释:本函数返回的字段名是区分大小写的。
代码如下:
$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);
}
?>
输出的结果如下:
代码输出效果不理想,我们改良一下吧
$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);
}
?>
改良以后的效果:
定义和用法
mysql_fetch_object() 函数从结果集(记录集)中取得一行作为对象。
若成功的话,本函数从 mysql_query() 获得一行,并返回一个对象。如果失败或没有更多的行,则返回 false。
语法
mysql_fetch_object(data)
参数
描述
data 必需。要使用的数据指针。该数据指针是从 mysql_query() 返回的结果。
提示和注释
注释:每个随后对 mysql_fetch_object() 的调用都会返回记录集中的下一行。
注释:mysql_fetch_object() 与 mysql_fetch_array() 类似,只有一点区别 - 返回的是对象而不是数组。间接地,也意味着只能通过字段名来访问数组,而不是偏移量。
代码如下:
$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);
}
?>
查询结果如下:
好了,关于这四个函数中的使用方法我已经介绍完了。它们之间的区别在于:
1、mysql_result():优点是使用方便,缺点是功能少,一次调用一行元素。2、mysql_fetch_row():优点在于执行效率在4种方法中最高,缺点只能用数字做为索引来获取元素。
3、mysql_fetch_array():优点执行效率很高,并且可以用属性名方式直接获得属性值。
4、mysql_fetch_object():采用面向对象思想,结构清析!
在使用的过程中,我觉后3种函数都不错,大家可以根据自己编程的需要,自由选择。因为,它们只是表现形式稍微有些区别,都能够满足我们的需要!
好了,又解决了一个疑问,希望本文对大家也有所帮助!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24200509/viewspace-1108966/ ,如需转载,请注明出处,否则将追究法律责任。