我使用的环境是phpstudy php5.6 + apache
1.打开phpStudy
打开vhosts.ini 如图 将documentroot改成 我们自己的目录 我这里使用我新建的目录 然后保存关闭 点击启动 这样就启动完成了。
2.检查拓展是否开启
在你填写的这个目录下新建一个名称任意的后缀为php的文件 我这里名称叫phpinfo.php
代码如下 1 3行不用我说了吧 应该都懂 第二行的这个函数的意思是 输出关于 PHP 配置的信息 保存 在 浏览器中输入localhost/你的文件名 比如我的是phpinfo.php 那就是 localhost/phpinfo.php 回车
打开后应该是这个样子的 很多东西 我们只找我们需要的信息 mysqli 在这个页面按下ctrl+f 搜索 mysqli
如果你的mysqli跟我显示一样就说明你有这个拓展 一般都是有的
3.连接数据库
1)首先看一张图 这是我用sqlyog链接数据库的时候需要我填写的信息
2)主机地址就是 链接到哪里的mysql 我们现在在本地所以是连接到本地的mysql(前提mysql启动)可以填写 localhost 127.0.0.1 ......等
3)用户名 就是这个连接mysql需要使用的用户名 没有用户名连接不会成功的
4)密码 与用户名配对的密码 密码不对也不会连接成功
5)mysql服务所在的端口 这个地方 一般是 3306
6)数据库如果指定就是我们只连接到某个数据库 只操作某个数据库
以上6条是sqlyog连接数据库需要的信息 那么我们PHP连接是不是也需要 肯定需要啊 不需要怎么连啊......
1)主机地址 就是 连接谁 某某
2)用户名 就是 连接时 使用的用户名
3)密码 就是配对用户名的密码
4)端口号 一般3306
5)数据库 某个数据库
试想一下 如果第 1 2 3 4条我们不写 php怎么知道我连接到哪里去 是谁连接的 他能干什么呢? 所以必填 1 2 3 4
新建一个php文件 名字还是随意 我这里叫mysql.php
重点来了 连接数据库的核心就是 mysqli_connect函数 函数 是函数 该函数一个需要6个参数 但是我们只需要填写前5个参数就可以 他们分别是
1)主机地址 字符串类型
2)用户名 字符串类型
3)密码 字符串类型
4)数据库名称 字符串类型
5)端口号 整数3306
按顺序写传进去
1)第一个参数localhost就是 主机地址
2)第二个参数root就是 用户名
3)第三个参数root就是 密码
4)第四个参数test就是 数据库名称
5)第5个参数3306就是 端口号
如果按照我的写 就需要保证你的 数据库地址 用户名 密码 数据库名称 端口号跟我的一致 如果不是 可能跟我的效果不一样
现在我们都填写好参数了 但是我们想一下 我们如何操作数据库呢? 通过什么操作数据库呢? 是不是想不出来。是不是感觉少了点什么? 对 就是少了点东西 mysqli_connecte 会如果连接成功会返回一个东东 通过这个东东我们可以操作数据库 没有他 就算有相应的函数 PHP也不知道去执行哪个数据库啊! 既然有返回值 我们就需要通过一个变量接收一下这个返回值
随便声明一个变量接收一下返回值 然后我们怎样才能知道我们是否连接成功了呢? 通过打印这个返回值 来查看是否是连接成功了。 怎么打印恩?
var_dump函数 他会输出一个变量 类型 和 结构 我们就用他查看一下吧。 var_dump只有一个参数
然后我们在浏览器输入 localhost/你的mysql链接的名字 比如我的是mysql.php 就输入localhost/mysql.php
输出了很多奇怪的东西 这样子就说明我们连接数据库成功了!!! 撒花 鼓掌
4.对数据库进行一次操作
现在返回值也有了 也 成功连接上数据库了 怎么操作数据库呢??? 通过函数 mysqli_query 有3个参数 我们只需要填写2个参数 就是 1)链接数据库的返回值 2)sql语句
这个SELECT * FROM news是 SQL语句 也就是说我们通过mysqli_query函数 进行数据库操作 为什么需要数据库的返回值? 因为如果不加PHP不知道去哪里执行这个SQL语句
那么执行成功了 结果呢??? 是不是少了点东西? 肯定是啊。 少了查询结果啊 查询结果就是你执行SQL语句的返回值 mysqli_query函数 如果执行成功了 会返回一个结果 如果执行失败返回false。 既然有返回值 肯定就要接收阿。
然后我们还是通过var_dump看看他是不是查询成功了!!!
因为之前有打印连接数据库的返回值 看起来很乱 所以注释掉打印连接数据库的返回值
刚才我们说过mysqli_query函数如果执行失败会返回false如果执行成功返回一个结果 如果你打开后看到的不是false 而是
这个样子就说明 你 查询成功了 但是你说这不是我查询的结果阿 这不对阿??? 是的 这确实不是你查询的结果 这是一个结果集 包括了你的真正的查询结果 我们通过 mysqli_fetch_all函数进行获取所有结果 mysqli_fetch_all 有 2个参数 我们只需要填写一个参数 就是通过mysqli_query查询返回的结果集
mysqli_fetch_all不会直接输出结果 而是以返回值的形式返回给我们 所以还需要接收一下 我这里就不接收了 直接打印吧
输出如上图 表示成功了。 如果你想问 我怎么以数据库的字段来获取访问。 我们分析一下这个结果
这是一个二维数组 一维数组是返回的结果中的行数 比如 一共查到9行记录 就应该长度是9 这个数组里还有数组 就是字段了 比如[0]里的[0]就是第一个字段 [0]里的[1]就是第二个字段。类推
结束 以上是自己的理解,如有不对请指正 QQ2430398012 希望能够一起交流、学习
代码如下:
phpinfo.php
1 <?php 2 phpinfo(); 3 ?>
mysql.php
1 <?php 2 $mysql = mysqli_connect("localhost", "root", "root", "test", 3306); 3 //var_dump($mysql); 4 $result = mysqli_query($mysql, "SELECT * FROM news"); 5 $rows = mysqli_fetch_all($result); 6 foreach ($rows as $key => $val) { 7 echo "id:{$val[0]} => text:{$val[1]}<br>"; 8 } 9 ?>
sql
1 /* 2 SQLyog v10.2 3 MySQL - 5.5.53 : Database - test 4 ********************************************************************* 5 */ 6 7 8 /*!40101 SET NAMES utf8 */; 9 10 /*!40101 SET SQL_MODE=''*/; 11 12 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 13 /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 14 /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 15 /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; 16 /*Table structure for table `news` */ 17 18 DROP TABLE IF EXISTS `news`; 19 20 CREATE TABLE `news` ( 21 `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 22 `text` varchar(512) DEFAULT '', 23 PRIMARY KEY (`id`) 24 ) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8; 25 26 /*Data for the table `news` */ 27 28 insert into `news`(`id`,`text`) values (1,'1'),(3,'3'),(4,'4'),(5,'5'),(6,'6'),(7,'7'),(8,'8'),(9,'9'),(10,'10'),(11,'11'),(12,'12'),(13,'13'),(14,'14'),(15,'15'),(16,'16'),(17,'17'),(18,'18'),(19,'19'),(20,'20'); 29 30 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; 31 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; 32 /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; 33 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;