PHP+MySQL数据库编程的步骤
第一步:PHP连接MySQL服务器
第二步:选择当前要操作的数据库
第三步:设置请求或返回的数据的字符集
第四步:执行各种SQL语句。
一.PHP连接MySQL服务器
PHP连接Mysql的方法有很多(也是php不断更新带来的后果),我就列下以下几种连接方法:
1、使用 mysql ,提示:此种方法官方不建议才,官方提示:will be removed。
$con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_close($con);
2、使用 mysqli(分过程式与对象式两种)Success... localhost via TCP/IP :
$link = mysqli_connect('localhost', 'root', '', '007online'); if (!$link) { die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } echo 'Success... ' . mysqli_get_host_info($link) . "\n"; mysqli_close($link);
3、使用PDO 可以用
$db = new PDO('mysql:host=localhost;dbname=007online', 'root', ''); try { foreach ($db->query('select * from 007_class_news') as $row){ print_r($row); } $db = null; //关闭数据库 } catch (PDOException $e) { echo $e->getMessage(); }
4、其他(使用 ADODB 等) ,
详细操作传送门:http://blog.csdn.net/zimin1985/article/details/18732505
require_once 'adodb.inc.php'; $conn = &ADONewConnection('mysql'); $conn->connect('localhost','root','','007online'); $conn->Execute("set names utf8"); $res = $conn->Execute("select * from 007_class_news"); if (!$res){ echo $conn->ErrorMsg(); }else{ var_dump($res); }
二.常用词语(以下用mysqli_xxx)
PHP连接MySQL服务器
1.mysqli_connect() 定义和用法:
函数打开一个到 MySQL 服务器的新的连接。
语法
$link = mysqli_connect('localhost', 'root', '', '007online'); if (!$link) { die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } echo 'Success... ' . mysqli_get_host_info($link) . "\n"; mysqli_close($link);
参数 | 描述 |
---|---|
host | 可选。规定主机名或 IP 地址。 |
username | 可选。规定 MySQL 用户名。 |
password | 可选。规定 MySQL 密码。 |
dbname | 可选。规定默认使用的数据库。 |
port | 可选。规定尝试连接到 MySQL 服务器的端口号。 |
socket | 可选。规定 socket 或要使用的已命名 pipe。 |
技术细节
返回值: | 返回一个代表到 MySQL 服务器的连接的对象。 |
---|---|
PHP 版本: | 5+ |
2、exit()
l 描述:输出一个提示信息,并中止脚本继续向下运行。
l 语法:void exit([$msg])
l 参数:$msg是可选项。如果省略,只中止脚本运行。
l 举例:exit(“PHP连接出错了”)
3、 mysqli_connect_errno()
l 描述:返回上一次MySQL执行失败时的文本错误信息。
l 语法: mysqli_connect_errno()
4、屏蔽系统错误@
描述:@可以屏蔽各种函数调用错误,或包含文件错误,但是不能用在函数定义或类定义之前。
例子:@mysqli_connect()
选择MySQL数据库
1.mysqli_select_db() 函数用于更改连接的默认数据库。
$conn=null; function query($sql){ //empty 判断一个变量的值是否为空 global $conn; $conn=mysqli_connect('localhost','root','');//连接数据库服务器 mysqli_select_db($conn,'testcharset');//选中要操作的数据库 //mysqli_query($conn,'set names utf8');//设定编码格式 $result=mysqli_query($conn,$sql);//执行一个sql语句 return $result; }
语法:mysqli_select_db(connection,dbname);
参数 | 描述 |
---|---|
connection | 必需。规定要使用的 MySQL 连接。 |
dbname | 必需,规定要使用的默认数据库。 |
返回值: | 如果成功则返回 TRUE,如果失败则返回 FALSE。 |
---|---|
PHP 版本: | 5+ |
设置MySQL返回的数据字符集
1.mysqli_query($conn,$sql);//执行一个SQL语句
描述:发送一条 MySQL 查询。
语法:resource
mysqli_query( string $query [, resource $link = NULL ] )
l 参数:
$query:指要发送的SQL语句。
增加记录:$query = “INSERT INTO news(title,content) VALUES(‘标题’ , ‘内容’)”
删除记录:$query = “DELETE FROM news WHERE id=10”
修改记录:$query = “UPDATE news SET title = ‘新标题’ , content = ‘新内容’ WHERE id=80”
查询记录:$query = “SELECT * FROM news WHERE id<100”
$link:可选项。指上一次打开的活动连接。
l 返回值
如果执行SELECT、SHOW、DESCRIBE命令,成功时返回结果集,失败时返回FALSE。
结果集也是一个资源标识符,是到MySQL数据的一个引用地址。
如果执行其它的SQL语句,执行成功返回TRUE,执行失败返回FALSE。
l 举例:
$result = mysqli_query(“SELECT * FROM news WHERE id<100”)
$result = mysqil_query(“DELETE FROM news WHERE id=100”)
从结果集中取出一行数据
1、mysqli_fetch_row()
描述:从结果集中取得一行作为枚举数组。
语法:array mysql_fetch_row ( resource $result )
参数:$result是结果集变量。
返回值:返回一个枚举数组,也就是从0开始的正整数下标。这里的下标,是与表的字段下标是对应。
举例:$arr = mysqli_fetch_row($result)
输出类似:
Array ( [0] => Adams [1] => John [2] => London )
2、mysqli_fetch_array()
描述:从结果集中取出一行,作为混合数组返回。
语法:array mysqli_fetch_array ( resource $result [, int $ result_type ] )
参数:
$result:是指结果集变量。
$result_type:是指返回的数组的类型。取值:MYSQL_BOTH、MYSQL_ASSOC、MYSQL_NUM
MYSQL_BOTH:默认的。也就是两种下标都存在。
MYSQL_ASSOC:只有字符下标的数组。相当于mysql_fetch_assoc()的功能。
MYSQL_NUM:只有整数下标的数组。相当于mysql_fetch_row()的功能。
以上三个参数是常量,系统常量必须全大写。
返回值:返回一个数组,至于是什么数组,取决于第二个参数。
举例:
$arr = mysql_fetch_array($result) //混合数组
$arr = mysql_fetch_array($result , MYSQL_ASSOC ) //关联数组
$arr = mysql_fetch_array($result , MYSQL_NUM) //枚举数组
输出类似:
Array ( [0] => Adams [LastName] => Adams [1] => John [FirstName] => John [2] => London [City] => London )
<?php // 假定数据库用户名:root,密码:123456,数据库:RUNOOB $con=mysqli_connect("localhost","root","123456","RUNOOB"); if (mysqli_connect_errno($con)) { echo "连接 MySQL 失败: " . mysqli_connect_error(); } $sql="SELECT name,url FROM websites ORDER BY alexa"; $result=mysqli_query($con,$sql); // 数字数组 $row=mysqli_fetch_array($result,MYSQLI_NUM); printf ("%s : %s",$row[0],$row[1]); // 关联数组 $row=mysqli_fetch_array($result,MYSQLI_ASSOC); printf ("%s : %s",$row["name"],$row["url"]); // 释放结果集 mysqli_free_result($result); mysqli_close($con); ?>
3、mysqli_fetch_assoc()
描述:从结果集中取一行,以关联数组返回。
语法:array mysqli_fetch_assoc(resource $result)
举例:$arr = mysqli_fetch_assoc($result)
输出类似:
Array ( [LastName] => Adams [FirstName] => John [City] => London )
增删查改的例子:
<?php //连接查询 $conn=null; function query($sql){ //empty 判断一个变量的值是否为空 global $conn; $conn=mysqli_connect('localhost','root','');//连接数据库服务器 mysqli_select_db($conn,'007online');//选中要操作的数据库 mysqli_query($conn,'set names utf8');//设置指定编码格式 $result=mysqli_query($conn,$sql);//执行一个SQL语句 return $result; } /* *执行SQL查询数据 *@param[参数] $sql 执行查询的SQL语句 *@param[参数] $isnum 是否返回数字键的数组 如果为true返回数字键数组//否则返回false *@return[返回] array 查询的结果数组 如果返回false查询失败 */ function select($sql,$isnum=false){ $result=query($sql); if($result){ $resultArray=array(); if($isnum){ while($arr=mysqli_fetch_row($result)){ //mysqli_fetch_row 的意思是:从结果集中取出一行数据 array_push($resultArray,$arr); } }else{ while($arr=mysqli_fetch_assoc($result)){ array_push($resultArray,$arr); } } return $resultArray; }else{ return false; } } //验证 // $arr=select('select * from 007_class_news'); // print_r($arr); // ----------------------------------------------------------------------------------------------------------------------------------------------- // //连接插入 $conn=null; function query($sql){ //empty 判断一个变量的值是否为空 global $conn; $conn=mysqli_connect('localhost','root','');//连接数据库服务器 mysqli_select_db($conn,'testcharset');//选中要操作的数据库 mysqli_query($conn,'set names utf8'); $result=mysqli_query($conn,$sql); return $result; } /* *执行SQL插入数据 *@param[参数] $sql 执行插入的SQL语句 *@param[参数] return boolean||int 如果执行失败 返回false,如果插入成功 返回插入的ID */ function insert($sql){ global $conn;//声明为全局 $result=query($sql); if($result){ return mysqli_insert_id($conn); //如果插入成功,返回ID } else{ return false; } } // $sql='insert into admin (`id`,`username`,`password`,`gender`,`age`) values ("","xkc","xkc",1,15)'; //验证 //一定要注意MySQL的单引号和双引号的区别,牢记,妹的坑了我一天时间不出结果…… $sql='INSERT INTO news(`title`, `author`, `source`, `hits`, `is_ppt`, `content`, `addate`) VALUES ("啦啦","unusual米","乱编等等七塘",3000,0,"content",300)'; $arr=insert($sql); //这里实际上是我在写的insert函数返回的一个判断,(如果执行成功则返回插入成功行的ID ,否则返回false) print_r($arr); // ----------------------------------------------------------------------------------------------------------------------------------------------------- // //连接删除 $conn=null; function query($sql){ //empty 判断一个变量的值是否为空 global $conn; $conn=mysqli_connect('localhost','root','');//连接数据库服务器 mysqli_select_db($conn,'testcharset');//选中要操作的数据库 //mysqli_query($conn,'set names utf8'); $result=mysqli_query($conn,$sql); return $result; } // /* // *执行SQL删除数据 // *@param[参数] $sql 执行删除的SQL语句 // *@param[参数] return boolean||int 如果执行失败 返回false,如果删除成功 返回删除了几条数据(即受影响的行数) // */ function del($sql){ global $conn;//声明为全局 $result=query($sql); if($result){ return mysqli_affected_rows($conn); //如果执行成功,返回改变了多少行(返回受影响的行数) } else{ return false; } } $sql='delete from news where id=2'; $arr=del($sql);//del返回受影响的行数 print_r($arr); // // ------------------------------------------------------------------------------------------------------------------------------------------ // 连接更改 $conn=null; function query($sql){ //empty 判断一个变量的值是否为空 global $conn; $conn=mysqli_connect('localhost','root','');//连接数据库服务器 mysqli_select_db($conn,'testcharset');//选中要操作的数据库 //mysqli_query($conn,'set names utf8'); $result=mysqli_query($conn,$sql);// return $result; } /* *执行SQL修改数据 *@param[参数] $sql 执行修改的SQL语句 *@param[参数] return boolean||int 如果执行失败 返回false,如果修改成功 返回修改了几条数据(即受影响的行数) */ function update($sql){ global $conn;//声明为全局 $result=query($sql); if($result){ return mysqli_affected_rows($conn); //如果执行成功,返回受影响的行数 } else{ return false; } } $sql='update news set hits ="2333" where id<=5'; $arr=update($sql);//del返回受影响的行数 print_r($arr); ?>
PHP函数补充
1、include语法结构
l 描述:包含并运行指定文件。
l 语法:include $filename 或者 include($filename)
l 举例:include “include/conn.php”
2、require语法结构
l 描述:包含并运行指定文件。
l 语法:require $filename 或者 require($filename)
l 举例:require “include/conn.php”
注意:include和require都是包含并运行文件,但是,是有区别的。
如果包含的文件不存在,include将报一个警告错误,脚本继续向下运行。
而require将报致命错误,脚本将立即终止执行。
3、header()
l 描述:发送一个自定义的http报文,换句话说:PHP返回的数据的格式或字符集。
l 语法:void header ( string $string)
l 举例:
u header(“content-type:text/html;charset=utf-8”) //设置PHP返回数据的字符集
u header(“location:http:www.sina.com.cn”); //网页跳转
u JS中的跳转:location.href = “http://www.sina.com.cn”
u HTML跳转:<meta http-equiv = “refresh” content = “2;url = http://www.sina.com.cn”>
URL统一资源定位器。
http://www.sina.com.cn/index.php?username=yao&userpwd=123456#top
?之前是文件名称。?之后为查询字符串。
查询字符串:?username=yao&userpwd=123456 //location.search
查询字符串之后,就是锚点名称。如:#top
urlencode()
描述:编码 URL 字符串
语法:string urlencode ( string $str )
说明:返回字符串,此字符串中除了 -_.之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。
举例:urlencode(“第32期”) = %E7%AC%AC32%E6%9C%9F
urldecode()
描述:解码已编码的 URL 字符串
语法:string urldecode ( string $str
)