php学习笔记5-exception 以及数据库操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhao__zhen/article/details/83933797

php学习笔记5.md

  1. Exception类
  • getCode() – 返回传递给构造函数的代码
  • getMessage(), 返回传递给构造函数的消息
  • getFile().返回产生异常代码的文件的完整路径
  • getLine()返回代码文件中产生异常的代码行号
  • getTrace() 返回一个包含了产生异常的代码回退路径的数组
  • _tostring()–允许简单的显示一个Exception对象,并且给出以上所有方法可以提供的信息。
  1. php连接数据库
@ $db = new mysqli('localhost', 'root', 'root', 'php_mysql');
if (mysqli_connect_errno()) { //该函数会在出现连接错误时返回一个错误号
    echo 'Error: Could not connect to database.  Please try again later.';
    exit;
}

mysqli_select_db(dbName);//选择使用哪个数据库,如果在建立数据库连接时已经选定数据库,可省去该步骤
$result = $db->query($query);//执行查询
$num_results = $result->num_rows;//统计所返回记录行的行数 也可以使用mysqli_num_rows($result)查询返回的行数
$row = $result->fetch_assoc();返回下一行数据
$row['isbn']获取改行的标签为isbn的数据
stripslashes($row['isbn']);去除数据中的斜杠

$row = $result->fetch_row($result);//此时可以使用$row[0],$row[1]...来获取值
$row = $result->fetch_object();//将一行的数据取到一个对象中

$db->affected_rows 在执行插入和删除时,使用该结果的值来判断是否执行成功

//Prepared语句
$query = "insert into books values(?,?,?,?)";
$stmt = $db->prepared($query);
$stmt->bind_param(‘sssd',$va1,$var2,$var3,$var4);//前面的sssd代表的是第一、二、三个参数时string,第四个参数时double类型,常用的还有b代表blob,i表示整数。在进行查询操作时可使用$stmt->bind_result($isbn,$author,$title,$price)函数进行结果绑定。
$stmt->execute();

$result->free()//释放结果集
$db->close()//关闭数据库连接
  1. 数据库的优化
  • 设计优化
    尽可能的让null最少,使主键最短,最小的列数据类型。(最小化冗余的设计思想)
    简化权限。
  • 表的优化
    如果一个表已经用了很长时间了,随着更新和删除操作的发生,数据会变得支离破碎,这时同样会增加在该表中查询所话的时间。可使用optimize table tablename;来进行修复。
  • 使用索引
    在需要提高查询速度的地方使用索引,简化索引,不要创建不使用的索引。
  • 使用默认值

在尽可能的地方使用列的默认值,在在与默认值不同的时候才插入数据,这样可以减少insert语句所花的时间。

  1. 数据库的备份
  • Lock tables;在执行备份之前,必须执行Flush tables;来确保对索引所做的任何修改写入磁盘。
  • mysqldump --opt --all-databases > all.sql;将所有用来重新构建一个SQL数据库所需的内容都导出到一个名叫all.sql的文件中。
  • mysqlhotcopy database /path/for/backup
  1. 存储过程

delimiter //

CREATE PROCEDURE total_orders (out total float)
BEGIN
	SELECT sum(amount) into total from orders;
END

//
delimiter;

-- 调用存储过程
call total_orders(@t)
  1. mysql 函数
delimiter //

CREATE FUNCTION add_tax  (price float) RETURNS FLOAT
	RETURN price * 1.1;
//
delimiter ;

-- 调用函数
select add_tex(100);

-- 声明变量
declare tax float default 0.10
  1. mysql 游标和句柄的使用
delimiter //

CREATE PROCEDURE largest_order(out largest_id int)
BEGIN
	DECLARE this_is int;
	DECLARE this_amount float;
	DECLARE l_amount float DEFAULT 0.0;
	DECLARE l_id int;
	
	DECLARE done INT DEFAULT 0;
	DECLARE continue HANDLER for SQLSTATE '0200' set done =1;
	DECLARE c1 CURSOR for SELECT orderid, amount from orders;

	open c1;
	REPEAT
		FETCH c1 INTO this_id, this_amount;
		if NOT done THEN
		if this_amount  > l_amount THEN
				SET l_amount = this_amount;
				SET l_id = this_id;
				end if;
		end IF;
	UNTIL done end REPEAT;
	CLOSE c1;
set largest_id = l_id;

END

//

delimiter;

猜你喜欢

转载自blog.csdn.net/zhao__zhen/article/details/83933797