PHP操作MySQL的三种方式
-
MySQL:非永久连接,性能较低,PHP5.5之后被废弃
-
MySQLi:永久连接,减轻服务器压力,只支持MySQL
-
PDO:能实现MySQLi的常用功能,支持大部分数据库(推荐使用)
查看服务器是否支持这三种方式可以使用PHP扩展查看函数phpinfo()
使用ctrl+f查找PDO
看到这个证明支持,如果不支持的话可以在php.ini里面进行更改,如果一句话前面有分号,代表这个语句是注释掉的,只要去掉就可以了。直接在里面搜索就找到了。
注意MySQL的连接方式在PHP 5.5之后被废弃了。修改之后需要重启服务。
方式一:MySQL
连接数据库
1.连接数据库
1 |
mysql_connect($server,$username,$password) |
2.选择数据库
1 |
mysql_select_db($database_name) |
3.设置字符集
1 |
mysql_set_charset($charset) |
MySQL方式执行SQL语句
1 |
mysql_query($query) |
mysql_query()对INSERT,UPDATE,DELETE,DROP之类的操作,执行成功时返回TRUE,出错时返回FALSE。
MySQL方式获取结果集
1 |
mysql_query($query) |
mysql_query对SELECT操作,执行成功会返回一个resource,如果查询出现错误会返回FALSE。
返回的结果资源应该传递给
1 |
mysql_fetch_array($result) |
和其他函数来处理结果表,去除返回的数据。
参数:
MYSQL_ASSOC:只得到关联索引
MYSQL_NUM:只得到数字索引
MYSQL_BOTH:将得到一个同时包含关联和数字索引的数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php header('content-type:text/html;charset=utf-8'); //1、连接数据库 $link = @mysql_connect('localhost','root','') or die('数据库连接失败!'); //2、选择数据库 mysql_select_db('test') or die('选择的数据库不存在!'); //3、设置字符集 mysql_set_charset('utf8'); //添加数据 $result = mysql_query("INSERT INTO users VALUES(NULL ,'李四',20)"); var_dump($result); //修改数据 $result = mysql_query("UPDATE users SET money=25 where id=3"); var_dump($result); //删除单条数据 $result = mysql_query("DELETE FROM users where id=3"); var_dump($result); //删除数据表 $result = mysql_query("DROP TABLE test"); var_dump($result); //查询 $result = mysql_query("SELECT * FROM users"); $line = mysql_fetch_row($result); $line = mysql_fetch_assoc($result); while($line = mysql_fetch_array($result,MYSQL_ASSOC)){ $data[] = $line; } var_dump($data); array (size=3) 'id' => string '1' (length=1) 'name' => string '慕课' (length=6) 'money' => string '100' (length=3) //关闭数据库连接 mysql_close($link); |
方式二:MySQLi面向过程方式操作数据库
1.面向过程方式连接数据库
1 |
$connect = mysqli_connect('host','username','password','database'); |
2.执行SQL语句
1 |
$result = mysqli_query($connect,$sql); |
3.获取结果集
1 |
mysqli_fetch_all($result) |
1 2 3 4 5 6 7 8 9 |
<?php header('content-type:text/html;charset=utf-8'); $conn = mysqli_connect('localhost','root','','test'); mysqli_query($conn,'set names utf8'); $sql = 'SELECT * FROM users'; $result = mysqli_query($conn,$sql); $data = mysqli_fetch_all($result,MYSQLI_ASSOC); var_dump($data); mysqli_close($conn); |