凡是过往,皆为序章

0%

PHP——数据库MySQL操作

总结PHP中操作MySQL的相关方法与命令。


PHP连接MySQL

PHP连接MySQL服务器

mysqli_connect()

  • 描述:连接到MySQL服务器

  • 语法:$link = mysqli_connect([host],[username],[password],[dbName],[port])

  • 返回值:连接成功,则返回MySQLi连接对象。如果失败,则返回FALSE。

@运算符

  • PHP支持错误抑制运算符@。
  • 可以把它放在变量,函数、include调用变量等前面。

在连接数据库失败的时候,往往系统给出提示信息,会暴露电脑的相关配置,可能发生信息的不安全泄露,造成隐患。我们可以使用错误抑制符@来避免数据库连接失败的错误提示。

用法:

1
$link = @ mysqli_connect([host],[username],[password],[dbName],[port]);

die()和exit()

  • 输出一个消息并且退出当前脚本,作用等同。
1
2
3
4
5
6
7
8
9
$db_host = "localhost";//主机号
$db_port = "3306"; //端口号
$db_user = "root"; //用户名
$db_password = "root"; //密码
$db_name = "mydb"; //数据库名
$charset = "utf8"; //字符集
if(!$link = @ mysqli_connect($db_host.":".$db_port,$db_user,$db_password)){
die("连接失败");//中止程序向下运行
}

mysqli_connect_error()

  • 返回连接失败的错误信息。

mysqli_close()

  • 关闭先前打开的数据库连接
  • 语法:bool mysqli_close(mysqli $link);

选择当前数据库

一个数据库服务器包含很多的数据库,通常需要针对某个具体的数据库操作。

语法:bool mysqli_select_db(mysqli $link,string $database)

1
2
3
4
if(!mysqli_select_db($link,$database)){
echo "选择数据库${db_name}失败";
die();
}

设置客户端字符集

设置默认字符编码

语法:bool mysqli_set_charset(mysqli $link,string $ charset)

执行SQL语句

mysqli_query()

  • 发送一条MySQL查询
  • 语法:resource mysqli_query(mysqli $link,string $query)
  • $query是查询的sql语句字符串

说明:mysqli_query()仅对SELECT,SHOW 或 DESCRIBE 语句返回一个mysqli_result结果集对象,如果查询不正确返回FALSE。对于其他类型的SQL语句,成功返回TRUE,失败返回FALSE。非FALSE的返回值意味着查询是合法的并能够被服务器执行。

注意:查询字符串不应以分号结束,和命令行模式下有区别。

mysqli_result结果集对象:结果已经查到,但必须用特殊的方法才能取出数据。

mysqli_free_result()

  • 释放与结果集相关联的内存
  • 语法:void mysqli_free_result(mysqli_result $result)

注意:是结果集对象mysqli_result,而不是bool。

从结果集获取数据

mysqli_fetch_row()

  • 从结果集中取出一行作为枚举数组(下标为整型的是枚举数组,下标为字符串的是关联数组)

  • array mysqli_fetch_row(mysqli_result $result)

  • 每调用一次,取出当前行,并把指针指向下一行,下次调用便是下一行的数据。

1
2
3
while($arr = mysqli_fetch_row($result)){
print_r($arr);//取出所有数组
}

mysqli_fetch_assoc()

  • 从结果集中取出一行作为关联数组

  • 语法:array mysqli_fetch_assoc(mysqli_result $result)

  • 从结果集取得的行生成的关联数组,如果没有更多行则返回FALSE。

注意:此函数返回的字段名大小写敏感。

mysqli_fetch_array()

  • 从结果集中取出一行作为关联数组或数字数组,或二者兼有。

  • 语法:array mysqli_fetch_array(mysqli_result $result [,int $result_type = MYSQLI_BOTH])

  • $result_type是一个常量,取值:MYSQLI_BOTH (二者兼有,默认),MYSQLI_ASSOC (关联索引),MYSQLI_NUM(数字索引)

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

注意:此函数返回的字段名大小写敏感。

二者兼有举例(一份数据在数组中存两遍,一遍枚举数组,一遍关联数组):

mysqli_fetch_all()

从结果集中取出所有行作为关联数组、枚举数组或二者兼有。

语法:mixed mysqli_fetch_all(mysqli_result $result [,int $result_type = MYSQLI_NUM])

与之前不同的是,默认为枚举数组;即第一维永远为数字,表示第几条记录,第二维字段可以改变,数字、字符串或二者兼有。

mysqli_error()

  • 显示执行sql语句失败的错误信息

  • 语法:mysqli_error(mysqli $link)

1
2
$sql = "insert into test(id,name,age) values(null,'李四',25)";
$result = mysqli_query($link,$sql) or die("2、数据插入失败:".mysqli_error($link));

获取记录数

mysqli_num_rows()

取得结果集中行的数目

语法:int mysqli_num_rows(mysqli_result $result)

注意:此命令仅对SELECT语句有效。

mysqli_affected_rows()

取得前一次MySQL操作所影响的记录行数,包括SELECT,UPDATE,INSERT或DELETE。

语法:int mysqli_affected_rows(mysqli $link)

注意:如果最近一次查询失败,函数返回-1。当使用UPDATE查询,MySQL不会将原值和新值一样的值更新,即此条记录不代表被修改。返回值不一定就是查询条件所符合的记录,只有修改过的记录数才会被返回。

案例演示注意事项

1、首先是表单的提交,在php中判断是否提交表单,可以在表单中设置隐藏域,值为一个随机值,判断这个随机且唯一的值是否正确即可判断表单是否提交,该方法可避免其他人提交表单修改自己数据库的不安全情况。

2、然后是复选框的提交,复选框提交时会出现覆盖现象,此时在name属性后添加[]来表明该属性为数组属性。

PHP会把name="hobby[]"看成添加一个数组元素,而HTML会把它看成一个字符串。

提示:将多个爱好连成一个值,并写入到数据库某个字段中,只需要一个字段来存储爱好,用到字符串的拼接。

~感谢你请我吃糖果~
-------------本文结束,感谢您的阅读,欢迎评论留言!-------------