PHP连接MYSQL流程:
1.连接MYSQL服务器
2.选择数据库
3.设置交互字集
4.拼写SQL语句并执行
5.关闭MYSQL连接
PHP连接MYSQL的三种方式:mysql、mysqli、pdo
一、MYSQL:
1.连接MYSQL
$mysql_resource =mysql_connect($host,$user,$password);//返回值就是MYSQL服务器连接资源($mysql_resource)
mysql_pconnect()
2.选择数据库
mysql_select_db($database_name)//返回值是bool
3.设置交互字集
mysql_query("set namesutf8");//gbk
4.执行SQL语句
拼写SQL语句:insert update delete select
$sql = "insert banji(name,nid)values('初三一班',2)";
mysql_query($sql[,$mysql_resource])//返回值根据SQL语句类型来决定
select查询语句:返回值就是资源(mysql结果集资源,$result_resource),失败返回false
mysql_fetch_assoc($result_resource)
mysql_fetch_array($result_resource)
mysql_fetch_row($result_resource)
mysql_fetch_object($result_resource)
mysql_num_rows($result_resource)
mysql_free_result($result_resource)
insert语句:返回值是bool
mysql_insert_id($mysql_resource)//获取最新的主键ID值
update、delete语句:返回值也是bool
mysql_affected_rows($mysql_resourc)//获取受影响的记录条数
5.关闭MYSQL连接
mysql_close($mysql_resource)
二:mysqli:函数形式 (improved)
1.连接MYSQL:
$mysql_resource = mysqli_connect($host,$user,$password,$database_name,$port,$socket)
2.选择数据库(并行到了第一步)
3.设置交互字符集
mysqli_set_charset($mysql_resource,'utf8/gbk');
4.执行SQL语句
拼写SQL语句
mysqli_query($mysql_resource,$sql)//返回值根据SQL语句类型来决定
select查询语句:返回值就是资源(mysql结果集资源,$result_resource),失败返回false
mysqli_fetch_assoc($result_resource)
mysqli_fetch_array($result_resource)
mysqli_fetch_row($result_resource)
mysqli_fetch_object($result_resource)
mysqli_num_rows($result_resource)
mysqli_free_result($result_resource)
insert语句:返回值是bool
mysqli_insert_id($mysql_resource)//获取最新的主键ID值
update、delete语句:返回值也是bool
mysqli_affected_rows($mysql_resourc)//获取受影响的记录条数
mysqli_execute($stmt)
$stmt = mysqli_stmt_init($mysql_resource);
mysqli_stmt_prepare($stmt,$query);
//$stmt =mysqli_prepare($mysql_resource,$query);
mysqli_stmt_bind_param($stmt,$type)//$type:i(整型),s(字符),d(双精度),b
mysqli_execute($stmt)
mysqli_multi_query($sql)//执行多条sql语句
5.关闭mysql连接
mysqli_close($mysql_resource)
mysqli:mysqli面向对象
1.连接MYSQL:
$link = newmysqli($host,$user,$password,$database_name,$port,$socket);
2.选择数据库(并行到了第一步)
3.设置交互字符集
$link->set_charset('utf8');
4.执行sql语句
$result = $link->query($sql);
select语句:返回值是资源对象(mysql结构集资源对象),失败返回false
$result->fetch_assoc()
$result->fetch_array()
$result->fetch_row()
$result->fetch_object()
$result->free_result()
$re->num_rows
update、delete语句:返回值是bool
$link->affected_rows
insert语句:返回值是bool
$link->insert_id
$stmt->execute();
$stmt = $link->prepare($sql);
$stmt->bind_param($type);//
$stme->execute();
$link->multi_query($sql);//执行多条SQL语句
5.关闭mysql连接
$link->close();
三、PDO
在配置文件中开启:
extension=php_pdo_mysql.dll
1.实例化PDO对象(连接[构造方法])
$pdo = new PDO("type:host=域名;dbname=数据库名;charset=utf8",$user,$password);
type:指定数据库类型,mysql,sqlite等
2.执行SQL语句
a.执行查询语句
$PDOs = $pdo->query($sql);//返回值是PDOStatement对象
PDOStatement对象中的方法:
$PDOs->setFetchMode($num)//指定fetch,fetchAll返回值的类型
2=>PDO::FETCH_ASSOC
3=>PDO::FETCH_NUM
4=>PDO::FETCH_BOTH
$PDOs->fetch();//获取一条记录,并且内部指针下移
$PDOs->fetchAll();//获取所有记录
$PDOs->rowCount();//获取所有记录条数
b.执行update,delete,insert语句:
$pdo->exec($sql);//返回值是受影响的记录条数,int类型
$pdo->lastInsertId()//获取主键ID值
c.$PDOs = $pdo->prepare($sql);//预处理,准备要执行的SQL
$PDOs->bindParam(":名称",变量调用值,type);//type类型:PDO::PARAM_INT=>1 PDO::PARAM_STR=>2
$PDOs->execute();
PDO提供了sql语句预处理功能(防止sql注入)
通过占位符来实现:
占位符:在sql语句中写一个字符,代表这里占一个位置,通过bindParam()给占位符赋值
语法格式: :名称
(mysqli中占位符是(?),PDO中是(:名称))
sql语句中哪些地方可以用占位符?
select: where 字段名=占位符
having 字段名=占位符
limit 占位符,占位符
update: 名值对列表 set 字段名=占位符 where 字段名=占位符
insert:值列表 values(占位符,占位符...)
delete: where 字段名=占位符
预处理语句:
1.预处理:sql语句模板创建,涉及到占位符
2.数据库解析,绑定值
3.执行
3.关闭MYSQL连接
关闭(析构方法)