>php教程 >php手册 >PHP链接MySQL的常用扩展函数,php链接mysql

PHP链接MySQL的常用扩展函数,php链接mysql

WBOY
WBOY원래의
2016-06-13 09:23:08877검색

PHP链接MySQL的常用扩展函数,php链接mysql

一、PHP连接数据库及基本操作

MySQL采用的是'客户机/服务器'架构。使用PHP安装的MySQL扩展函数,和直接使用客户端软件区访问MySQL数据库服务器,原理一样,都需要向MySQL管理系统发送SQL命令,然后将结果返回给用户。

在PHP中,SQL分为两类(查看SQL语句分类):一是有返回结果集的DQL语句,如select/desc 表名,执行完毕之后,需要PHP处理结果集;二是没有结果集的,如DML、DDL等,但是DML语句执行成功后对数据表的记录有影响。

//连接数据库,常用参数是主机名、用户名和密码<br>$link = mysql_connect('localhost','root','123456');<br>//判断是否连接成功<br>if(!$link)<br>{<br>die('连接失败'.mysql.error()); //连接成功返回资源标识符,失败返回false,mysql_error显示错误信息<br>}<br><br>//选择数据库,mysql_error()只在调试中使用,再部署项目时就不要了,不然会泄露数据库信息<br>mysql_select_db('test') or die('选择数据库失败'.mysql_error());<br><br>//mysql_query()可以设置字符集和执行SQL语句<br>mysql_query('set names utf-8');<br>$sql = 'insert into test(id,name) values("1","dwqs")';<br>$result = mysql_query($sql);  //执行sql返回结果集<br><br>//处理结果集,insert属于DML,会对表的记录有影响<br>if($result && mysql_affected_rows() > 0)<br>{<br>//mysql_insert_id()返回最后一条新纪录的auto_increment值<br>echo '插入数据成功'.mysql_insert_id().'<br>';<br>}<br>else<br>{<br>echo '插入数据失败,错误号:'.mysql_errno().'错误信息:'.mysql_error().'<br>';<br>}<br><br>//关闭连接<br>mysql_close($link);<br>?>

二、PHP处理select查询结果集

在PHP中执行select语句返回一个结果集,可以用于对各个字段的处理

$result = mysql_query('select * from test');<br>//获取记录行的个数<br>$rows = mysql_num_rows($result);<br>//获取字段个数,即数据列<br>$cols = mysql_num_fields($result);

如果需要访问结果集中的数据,可以使用下列四个函数中的一个(均以结果集资源符作为参数,并自动返回下一条记录,在表末尾时返回false)

1、mysql_fetch_row():该函数将一条结果记录返回并以一个普通的索引数据保存

2、mysql_fetch_assoc():从结果集中取得一行作为关联数据保存

3、mysql_fetch_array():从结果集中取得一行作为关联数组,或数字数组,或二者兼有。可以使用MYSQL_ASSOC(关联数组形式)、MYSQL_NUM(索引数组形式)和MYSQL_BOTH作为第二个参数,指定返回的数据形态。

4、mysql_fetch_object():从结果集中取得一行作为对象,各个字段以对象方式访问。

建议:没有特殊要求,不要使用mysql_fetch_array(),可以使用mysql_fetch_row()或者mysql_fetch_assoc()实现同样的功能,且效率高。

另外也有三个与结果集相关的常用函数

5、mysql_data_seek(int $num):移动内部结果的指针,$num是想要设定的新的结果集指针的行数。

6、mysql_fetch_lengths(resource <font face="NSimsun">$result</font>):取得结果集中每个输出的长度

7、mysql_result(resource <font face="NSimsun">$result</font> , int <font face="NSimsun">$row[,mixed $field]</font>):返回 MySQL 结果集中一个单元的内容。字段参数可以是字段的偏移量或者字段名,或者是字段表点字段名(tablename.fieldname)。如果给列起了别名('select foo as bar from…'),则用别名替代列名。调用 mysql_result()不能和其它处理结果集的函数混合调用。

php对于连接mysql函数的应用

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() 的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。

例子:
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

$db_selected = mysql_select_db("test_db",$con);
$sql = "SELECT * from Person WHERE Lastname='Adams'";
$result = mysql_query($sql,$con);
print_r(mysql_fetch_array($result));

mysql_close($con);
?>
输出类似:
Array
(
[0] => Adams
[LastName] => Adams
[1] => John
[FirstName] => John
[2] => London
[City] => London
)
///////////////////////
mysql_fetch_assoc() 函数从结果集中取得一行作为关联数组。
返回根据从结果集取得的行生成的关联数组,如果没有更多行,则返回 false。
mysql_fetch_assoc(data)
参数:data(必需)要使用的数据指针。该数据指针是从 mysql_query() 返回的结果。

注释:mysql_fetch_assoc() 和用 mysql_fetch_array() 加上第二个可选参数 MYSQL_ASSOC 完全相同。它仅仅返回关联数组。这也是 mysql_fetch_array() 初始的工作方式。
提示:如果在关联索引之外还需要数字索引,用 mysql_fetch_array()。
注意:本函数返回的字段名是区分大小写的。

例子如下:
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
{
die('Could not connect: ' . mysq......余下全文>>
 

对于php连接mysql函数

由于没有看到完整的代码,仅就看到的代码试作解答如下:

1. Notice: Undefined variable: db in C:\xampp\htdocs\shop\files\mysql.php on line 5
警告:未字义的变量db(第5行不太清楚是哪行代码)。

这个错误提示,从已知的代码来看,其原因应该是你在函数体里引用了一个函数体外定义的变量(db),从代码看其实就是没有注意到, 对于变量 作用域范围(全局、局部)错误应用的问题。

简单的说,函数 select_mycx 里找不到 db。

解决办法:

(1). 用参数传递进去。

function select_mycx($table,$by,$select_str,$number,$db)
{
.....
}

(2). 在参数体里定义全局变量引用:

function select_mycx($table,$by,$select_str,$number)
{
global $db;

....
}

2.Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\shop\files\mysql.php on line 5

这个错误实际上是上面的错误引起的,因为$db没有正确引入,所以再 query 当然不能正确执行。
 

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.