微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php&&mysql初识

PHP数据库操作之连接数据库

PHP一个数据库可能有一个或者多个扩展,其中既有官方的,也有第三方提供的。像MysqL常用的扩展有原生的MysqL库,也可以使用增强版的MysqLi扩展,还可以使用PDO进行连接与操作。

不同的扩展提供基本相近的操作方法,不同的是可能具备一些新特性,以及操作性能可能会有所不同。

MysqL扩展进行数据库连接的方法

$link = MysqL_connect('MysqL_host', 'MysqL_user', 'MysqL_password');

MysqLi扩展:

$link = MysqLi_connect('MysqL_host', 'MysqL_user', 'MysqL_password');

PDO扩展

$dsn = 'MysqL:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
$dbh = new PDO($dsn, $user, $password);

PHP数据库操作之执行MySQL查询

数据库建立连接以后就可以进行查询,采用MysqL_query加sql语句的形式向数据库发送查询指令。

$res = MysqL_query('select * from user limit 1');

对于查询类的语句会返回一个资源句柄(resource),可以通过该资源获取查询结果集中的数据。

$row = MysqL_fetch_array($res);
var_dump($row);    

PHP数据库操作之插入新数据到MysqL

当我们了解了如何使用MysqL_query进行数据查询以后,那么类似的,插入数据其实也是通过执行一个sql语句来实现,例如:

$sql = "insert into user(name, age, class) values('李四', 18, '高三一班')";
MysqL_query($sql); //执行插入语句

MysqL中,执行插入语句以后,可以得到自增的主键id,通过PHPMysqL_insert_id函数可以获取该id。

$uid = MysqL_insert_id();

这个id的作用非常大,通常可以用来判断是否插入成功,或者作为关联ID进行其他的数据操作。

PHP数据库操作之取得数据查询结果

我们发现PHP操作数据库MysqL客户端上操作极为相似,先进行连接,然后执行sql语句,再然后获取我们想要的结果集。

PHP有多个函数可以获取数据集中的一行数据,最常用的是MysqL_fetch_array,可以通过设定参数来更改行数据的下标,认的会包含数字索引的下标以及字段名的关联索引下标。

$sql = "select * from user limit 1";
$result = MysqL_query($sql);
$row = MysqL_fetch_array($result);

可以通过设定参数MysqL_NUM只获取数字索引数组,等同于MysqL_fetch_row函数,如果设定参数为MysqL_ASSOC则只获取关联索引数组,等同于MysqL_fetch_assoc函数

$row = MysqL_fetch_row($result);
$row = MysqL_fetch_array($result, MysqL_NUM); //这两个方法获取的数据是一样的
$row = MysqL_fetch_assoc($result);
$row = MysqL_fetch_array($result, MysqL_ASSOC);

如果要获取数据集中的所有数据,我们通过循环来遍历整个结果集。

$data = array();
while ($row = MysqL_fetch_array($result)) {
    $data[] = $row;
}

PHP数据库操作之查询分页数据

上一节中,我们了解到通过循环可以获取一个查询的所有数据,在实际应用中,我们并不希望一次性获取数据表中的所有数据,那样性能会非常的低,因此会使用翻页功能,每页仅显示10条或者20条数据。

通过MysqL的limit可以很容易的实现分页,limit m,n表示从m行后取n行数据,在PHP中我们需要构造m与n来实现获取某一页的所有数据。

假定当前页为$page,每页显示$n条数据,那么m为当前页前面所有的数据,既$m = ($page-1) * $n,在知道了翻页原理以后,那么我们很容易通过构造sql语句在PHP中实现数据翻页

$page = 2;
$n = 2;
$m = ($page - 1) * $n;
$sql = "select * from user limit $m, $n";
$result = MysqL_query($sql);
//循环获取当前页的数据
$data = array();
while ($row = MysqL_fetch_assoc($result)) {
    $data[] = $row;
}

在上面的例子中,我们使用了$m与$n变量来表示偏移量与每页数据条数,但我们推荐使用更有意义的变量名来表示,比如$pagesize, $start, $offset等,这样更容易理解,有助于团队协作开发。

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐