使用php从web访问mysql
php提供多种操作数据库的方案:mysql扩展、mysqli扩展、PDO等。mysql扩展是伴随着php的产生而产生的,随着mysql数据库的发展mysql扩展不能够支持mysql数据库的一些新的特性如预加载功能,mysqli扩展应运而生,重新梳理了php对mysql数据库的支持,支持mysql数据库的新特性,同时把对mysql数据库的支持封装在一个类中,提高了操作效率。
1 mysql扩展
- 连接数据库
$conn = mysql_connect("127.0.0.1",'root','root'); mysql_select_db('db');
连接失败返回false,产生警告信息,成功返回资源标识符
- 访问数据库
$result = mysql_query($sql);
增删改查都通过此句执行
查询操作失败返回false,产生警告信息,成功返回资源标识符
update\delete等操作失败返回false,产生警告信息,成功返回false
- 操作返回结果
面向过程方法查询返回的是资源标识符,mysql_fetch_array($result)返回当前行的数组其中key是字段名,如果没有更多行返回false
while($arr = mysql_fetch_array($result)){ print_r($arr['name']); }
- 总结
1 //连接失败产生警告信息不产生异常,返回false,代码继续执行,成功返回资源标识符 2 //$conn = mysql_connect("10.1.1.11",'root','root@pwd@1231'); 3 //连接失败,抛出警告信息->输出提示->终止程序执行 4 //$conn = mysql_connect("10.1.1.11",'root','root@pwd@1231') or die('连接失败!'); 5 //利用@抑制错误信息的显示 6 //$conn = @mysql_connect("10.1.1.11",'root','root@pwd@1231'); 7 8 //选择数据库,成功返回true,失败返回false产生警告信息 9 //mysql_select_db('token_conf'); 10 11 12 //操作数据库,成功返回true,失败返回false产生警告信息成功查询返回资源标识符,其他返回True 13 //$result = mysql_query($sql); 14 //综合考虑采用如下做法比较稳妥前提是项目关闭异常信息 15 //调试模式下也可以直接这么写不用关闭异常 16 $conn = mysql_connect("127.0.0.1",'root','root'); 17 mysql_select_db('tf'); 18 $sql = "select * from t_user"; 19 $result = mysql_query($sql); 20 if($result){ 21 while($arr = mysql_fetch_array($result)){ 22 print_r($arr['name']); 23 } 24 }else{ 25 print_r('数据库错误'); 26 }
2 mysqli扩展
mysqli扩展是在mysql扩展无法支持mysql数据库一些新的特性而产生的,它可以支持mysql数据库的新的特性如预处理等,提高了操作数据库的效率,主要使用方式如下:
- 连接数据库:
$db = new mysqli('127.0.0.1','root','pass','db');
- 操作数据库:
$result = $db->query($sql);
- 结果处理:
if($result){ if($result->num_rows>0){ while($row = $result->fetch_array()){ print_r($row[1]); } } }
- 完整代码:
$db_host="10.1.1.101"; //连接的服务器地址 $db_user="root"; //连接数据库的用户名 $db_psw="root@pwd@1231"; //连接数据库的密码 $db_name="db"; //连接的数据库名称 $mysqli=new mysqli(); $mysqli->connect($db_host,$db_user,$db_psw,$db_name); $sql = "select * from t_user where name=?"; $result = $mysqli->prepare($sql); $result->bind_param('s', 'ian'); $result->execute(); $result->bind_result($id,$name); while($result->fetch()){ echo $id; echo $name; }
3 PDO
PDO:php Data Object , 使用这种数据库扩展易于数据库的更换,一般项目开发使用这种方式
$db = new PDO('mysql:host=127.0.0.1;dbname=token_conf', 'root', 'root@pwd@1231'); $result = $db->query("select * from t_user"); if($result){ foreach($result as $row){ print_r($row);exit; } }