php中mysql_PHP中MySQL操作

本次使用的demo是MySQL的示例数据库employees,

PHP中的demo代码可以在

这里使用的是

一、连接数据库

1.1、连接

打开一个到 MySQL 服务器的连接。有面向对象风格和过程化风格。

$link = mysqli_connect("localhost", "root", "123456", "employees");//面向过程

$link = new mysqli("localhost", "root", "123456", "employees");//面向对象

如果成功则返回一个 MySQL 连接对象, 或者在失败时返回 FALSE。

1.2、设置编码

设置在数据库间传输字符时所用的默认字符编码。

$link->query("SET NAMES utf8");//执行语句

mysqli_set_charset($link, 'utf8');//面向过程

$link->set_charset('utf8');//面向对象

成功时返回 TRUE, 或者在失败时返回 FALSE。

二、查询

2.1、对数据库执行一次查询

$sql = 'select * from employees limit 10';$result = mysqli_query($link, $sql);//面向过程

$result = $link->query($sql);//面向对象

4Xd2BCjrI6bTnImSBCwhoJgULDoLO93gQ2vsyOBbGXGw4PPGKq2ZM3ttNZKEHa0LwTjcXJ4gLkgGBSMmLh4mMN1Ajs8k152VxCcCDYOAj5EcRfsL3zyguBEMG4Lr+4Rw7cDxkoQDAqWDDkeyIEPhnxWWc0w6O5a7sSwe1yfOkITtNC3g+xBT0N7tRaCQLpLgkASBBKAQNvwe4RWAnHwEgkCqfZMIA7eIEEgCQJJEEgmCCTT24FkgkAynRhKpm8HkgkCyQSBZIJAMkEgmSCQzOwfgyoLZ+dxz04AAAAASUVORK5CYII=

失败时返回 FALSE,成功执行SELECT, SHOW, DESCRIBE或 EXPLAIN查询会返回一个对象,其他查询则返回TRUE。

接下来的2和3就是根据

还有就是下面的所有方法都有面向过程和面向对象的方式,为了节省篇幅,下面例子都是面向对象的方式。

2.2、查询记录获取

fetch_all、fetch_array、fetch_assoc与fetch_row,返回的是array。

fetch_fields、fetch_field、fetch_object与fetch_field_direct,返回是stdClass Object。

重置指针到起始,当做fetch_fields、fetch_assoc等读取数据的时候,指针会变化。

返回记录数组,这个方法有可以传递一个参数resulttype,三个常量MYSQLI_ASSOC, MYSQLI_NUM, or MYSQLI_BOTH。默认是MYSQLI_NUM。

$data = $result->fetch_all(MYSQLI_ASSOC);

获取所有结果行并返回结果集作为关联数组,数字数组,或两者兼而有之。

下面的第一张返回结果图,引用的参数是MYSQLI_ASSOC,第二张引用的参数是MYSQLI_NUM。其实就是key的不同。

AP0+J1bPGreWAAAAAElFTkSuQmCC

dKsqt2OeSuDdhDAwtrtmLcsaAcBoB0EgHYQANpBAAtrh3PrgnYQwKra4dzSrKodLA3aQQBoBwGgHQSAdhAA2kEAaAcBoB0EgHYQwH+hPvnxJhJO3gAAAABJRU5ErkJggg==

返回一条记录数组,或没有记录返回NULL。与fetch_all一样,也有个参数resulttype,三个常量供选择。默认是MYSQLI_BOTH。

$data = $result->fetch_array(MYSQLI_ASSOC);

IM1CKpQuj3RcqRPAC1SKpALZIqUIukCtQiqQKfo0kVqEVSBb53IVXg+2hSBWqRVIFaJFX4H5C2UPNCK1oPAAAAAElFTkSuQmCC

3U6M2fGumnRqd+1OjMnxrpp0b6qfkD3Ye8gszamOMAAAAASUVORK5CYII=

没有resulttype参数,返回的是一条关联数组,或者没记录返回NULL。如果数组中包含相同的键名,那么将取最后一列。

fIpB6qkNTzLzDKL+omHQydAAAAAElFTkSuQmCC

同样没有resulttype参数,返回的是一条数字数组,或者没有记录返回NULL。

IaguDA0v3IReOrWYZOiZ93QqUTPoviE6U+KSzX0IJKqEElVCCSigEVW8rmypYqeK6owSVUPEzVVy3k6ASSlAJJaiEElRC6e2XUIJKKJ0oEUpnv4QSVEL9AatffIIyOKrYAAAAAElFTkSuQmCC

用此方法获取表中所有的字段信息,包括字段名、字段长度、所属表等。

返回多个对象的数组,如果没有就返回FALSE。

JIdjS8GmnKitml+JHVSCYKs0thToqHOc9bPBzWJ2bUtnP6kC25p1nwwBiDlmanDwKzhQedyweV+kUwG2qC2VATzIaaYDbU5JFm8+UJmjzS7A25oQVmQ02eavaG3BCC2VATzIaaYDbUBLOhJk81G60hBrOhJo80G62hySPNBmiC2VATzIaaYDbUBLOhJpgNNcFsqAlmQ00wG2ryPwTpRTXDab1PAAAAAElFTkSuQmCC

与上面的方法相对,只会获取某一个字段信息。配合

返回一个对象的数组,如果没有就返回FALSE。

$result->field_seek(1);$fields = $result->fetch_field();

注意上面的代码,返回的将是第二个字段的信息。

8PsE6oqf0vPPoAAAAASUVORK5CYII=

可以传入两个参数class_name和params,返回一个关联对象,如果没有数据返回NULL。

Ked8SHoDojEuI9EiQPhRIkxVCCpBgkQX6dIjfgVEGqkKyGEiTF+N8FqUKyFEqQFEMJkmIoQVIMJUiK4S9iUgwlSIrh2xFSDN8Rk2IoQVIMJUiK+Q8Pd5jx9evw0gAAAABJRU5ErkJggg==

可以传入一个参数fieldnr,也就是字段的位置。效果等效于上面的

USAKUEUmAp9gkAf6mRhKgjEgClBFJgDIiCfwPfd6GFwWusmIAAAAASUVORK5CYII=

2.3、插入更新等信息获取

employees表的主键原先不是自增长的,我后面改了下字段,目前表中有499999条数据。

$sql = "insert into employees(`birth_date`,`first_name`,`last_name`,`gender`,`hire_date`) values ('1988-10-9', 'pw', 'strick', 'M', '1988-10-9')";$result = $link->query($sql);var_dump($link->affected_rows);//受影响行数

var_dump($link->insert_id);//主键

//print_r(mysqli_error($link));//打印错误信息

上面的$result返回的将是一个boolean值,而主键和影响行数是需要从mysqli对象中获取。

三、预处理

3.1、添加更新等操作

预处理能有效的防止sql注入的产生,

$sql = "insert into employees(`birth_date`,`first_name`,`last_name`,`gender`,`hire_date`) values (?,?,?,?,?)";$stmt = $link->prepare($sql);//获得预处理对象//bind_param中的第N个参数,必须得用变量赋值

$birth_date = '1989-10-9';$first_name = 'pw2';$last_name = 'strick2';$gender = 'M';$hire_date = '1988-10-9';$stmt->bind_param('sssss', $birth_date, $first_name, $last_name, $gender, $hire_date);//绑定时使用变量绑定

//$stmt->bind_param('sssss', '1989-10-9', 'pw2', 'strick2', 'M', '1988-10-9');//不能使用这种方式

$stmt->execute();//执行预处理

var_dump($stmt->insert_id);//主键

var_dump($stmt->affected_rows);//受影响行数

初始化一个预处理对象,传入string类型的查询语句。返回一个FALSE。

绑定预处理查询语句中的变量。第一个参数是指定数据类型。

QgBAAAAAElFTkSuQmCC

3.2、查询

$sql = 'select * from employees limit ?';$stmt = $link->prepare($sql);$count = 10;$stmt->bind_param("i", $count);$stmt->execute();$result = $stmt->get_result();//结果集取后的操作就和之前一样了

demo数据库下载:

demo代码下载:

参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值