用PHP访问MySQL数据库的方法
首先
以下为“如何使用php从mysql操作”方法总结的备忘:
在标题所示,本文将总结从php操作mysql的方法。
环境
CentOS7.4
php5.4.16
5.5.56-MariaDB(mysql)
※请直接将Mariadb视为Mysql的继承版本,基本使用方式没有变化。
◆建立数据库服务器
使用以下命令安装MariaDB。
yum -y安装mariadb mariadb-server
暂时启动mariadb。※启用是指在系统启动时自动启动mariadb的命令。
systemctl start mariadb
systemctl enable mariadb
确定Mariadb已经成功启动,请使用以下命令:
systemctl status mariadb
连接到DB服务器。
执行命令后,确认出现”欢迎使用MariaDB监控器”字符串。
mysql -u root
设置密码。
※()内的password可更改为任何字符!
为 root@localhost 用户设置密码为 password 的值。
授予所有权限给特定用户和主机,并将密码改为先前指定的密码。
※在此,用户指定为root。
另外值得一提的是,在”GRANT ALL PRIVILEGES ON .”之后,您还可以指定可连接的数据库和表。
使用”GRANT ALL PRIVILEGES ON *.* TO root@主机名 IDENTIFIED BY ‘password’ WITH GRANT OPTION;”
如果要让root从192.168.0.1访问名为sampledb的数据库中的sampletable表的话,可以执行以下操作:
GRANT ALL PRIVILEGES ON sampledb.sampletable TO root@192.168.0.1 IDENTIFIED BY ‘password’ WITH GRANT OPTION;
刷新設定;刷新權限;刷新特權。
本次使用以下链接可下载的示例数据库作为练习用数据库。
下载world数据库的GZIP文件。
[https://dev.mysql.com/doc/index-other.html]
将下载的文件(world.sql)放置在适当的DB服务器位置上。我认为/tmp附近可以。
进入目标目录并使用以下命令解压缩。
gunzip world.sql.gz
只要在-p的位置上写入您自己指定的密码并运行,就可以导入数据库。
mysql -u root -p password < world.sql
确认是否成功导入到数据库中。
mysql -u root -p
※输入密码后执行下一个命令
show databases;
如果显示的数据库中有world,则表示没有问题。
在防火墙设置中允许Mariadb。确认执行以下三个命令后显示”success”。
firewall-cmd –add-service=mysql –zone=public
firewall-cmd –add-service=mysql –zone=public –permanent
firewall-cmd –reload
使用以下命令来确认服务列表中是否包含 MySQL:
firewall-cmd –list-all
◆建立网页服务器
1. 安装php
执行以下命令来安装Apache、php和用于连接数据库的驱动程序(mysql_pdo)。
yum -y install httpd php php-pdo_mysql
首先启动httpd。※enable命令是为了在系统启动时自动启动Apache。
systemctl start httpd
systemctl enable httpd
请确认httpd已经启动,使用以下指令:systemctl status httpd。
确认防火墙设置允许 HTTP。执行以下三个命令后,请确保成功显示。
firewall-cmd –add-service=http –zone=public
firewall-cmd –add-service=http –zone=public –permanent
firewall-cmd –reload
请确认以下命令中的“services”栏中是否包含了“http”:
firewall-cmd –list-all
通过检查Http的配置文件中的DocumentRoot和DirectoryIndex来确认。
cat /etc/httpd/conf/httpd.conf | grep DocumentRoot
DocumentRoot “/var/www/html”
默认情况下,指定了上述目录。如果指定了其他目录,后续的index.php将被放置在此处指定的目录中。
虽然还有其他被grep命令匹配的内容,但因为被注释掉了所以可以忽略。
cat /etc/httpd/conf/httpd.conf | grep DirectoryIndex
DirectoryIndex index.php index.html
⇒ 只要在最左边指定了index.php,就可以了。
即使在IfModule标签内也可能无效,所以只需确保在最外层有指定DirectoryIndex就可以了。
请执行以下命令,并复制粘贴下方的脚本:
vim /var/www/html/index.php
<?php
phpinfo();
?>
使用以下命令重启httpd,并确认没有错误。
systemctl restart httpd
systemctl status httpd
将index.php文件的内容编辑为以下内容。请将连接的源IP或主机名以及密码根据您自己的环境和设置的值进行更改并保存。
<?php
#phpinfo();
try{
$db=new PDO("mysql:host=接続元IP or HOST名;dbname=world", "root", "password");
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
print "Connected<br>";
#$db->query('USE world');
$res=$db->query('SELECT * FROM city');
while ($result=$res->fetch()) {
print $result[0];
print " : ";
print $result[1];
print " : ";
print $result[2];
print " : ";
print $result[3];
print " : ";
print $result[4];
print "<br>";
}
} catch(PDOException $e){
print "Error happened. The messesage is following sentence : " .$e->getMessage();
}
?>
使用以下命令重新启动httpd。如果没有错误,在自己的服务器上尝试访问并确认是否可以获取到数据库的内容。
systemctl restart httpd
systemctl status httpd