PHPinfo:从 mysqli 到 mysql 的转换指南
在PHP编程中,mysqli
和 mysql
是两个不同的数据库连接库,尽管它们的功能和用法相似,但在某些情况下,使用 mysqli
可能会遇到一些问题,特别是在需要展示 MySQL 数据的情况下,本文将详细介绍如何通过设置 mysqli
的相关配置来实现 mysqli
的功能,并确保它能够与 MySQL 数据库进行交互。
环境准备
为了演示这个过程,我们需要安装并配置以下软件环境:
- Apache 或其他 Web 服务器
- PHP (版本需支持
mysqli
) - MySQL 数据库服务器(可选)
安装 MySQL 数据库
-
下载并解压 MySQL 客户端:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-apt-config_0.6.3_all.deb sudo dpkg -i mysql-apt-config_0.6.3_all.deb sudo apt-get update
-
添加 MySQL 插件:
sudo sh -c 'echo "deb http://repo.mysql.com/apt/ubuntu $(lsb_release -cs) mysql-5.7" > /etc/apt/sources.list.d/mysql.list' curl -sSfL https://downloads.mariadb.org/mariadb/repositories/community/amd64/server/galera/debian/10/main.gpg | sudo apt-key add - sudo apt-get install -y software-properties-common sudo apt-add-repository universe sudo apt-get update sudo apt-get install mariadb-server php-mysql
-
启动 MySQL 服务:
sudo systemctl start mysql sudo systemctl enable mysql
配置 Apache 使用 MySQL 数据
-
创建 MySQL 数据库和用户:
CREATE DATABASE testdb; GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost'; FLUSH PRIVILEGES;
-
编辑 Apache 配置文件: 打开
/etc/apache2/sites-available/000-default.conf
文件:sudo nano /etc/apache2/sites-available/000-default.conf
在文件末尾添加以下代码:
<Directory /var/www/html> AllowOverride All Require all granted </Directory> <IfModule mod_ssl.c> <VirtualHost _default_:443> ServerName www.example.com DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /path/to/example.crt SSLCertificateKeyFile /path/to/example.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> </VirtualHost> </IfModule> Include /etc/letsencrypt/options-ssl-apache.conf
-
生成 SSL 证书:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /path/to/example.key -out /path/to/example.crt
-
重启 Apache 以应用更改:
sudo systemctl restart apache2
测试连接
现在我们可以尝试连接到 MySQL 数据库了。
<?php $servername = "localhost"; $username = "testuser"; $password = "password"; // 创建连接 $conn = new mysqli($servername, $username, $password); // 检查连接 if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } else { echo "Connected successfully\n"; } // 输出 PHPInfo 信息 echo "<pre>"; phpinfo(); echo "</pre>"; $conn->close(); ?>
上述代码会输出包含 MySQL 特定配置的 phpinfo()
函数结果,包括数据库连接相关的选项,如果一切正常,你应该能看到关于 MySQL 的详细信息。
通过以上步骤,我们已经成功展示了如何使用 mysqli
连接到 MySQL 数据库,并验证了 mysqli
是否正确工作,如果你还希望在 PHP 中直接查看 MySQL 数据,请参考下面的示例代码,这将会返回当前数据库中的所有表名及字段信息。
<?php include_once('mysqli.php'); $db = new mysqli("localhost", "root", "", "testdb"); if ($db->connect_errno) { printf("Connect failed: %s\n", $db->connect_error); exit(); } else { echo "Database connected.\n"; } $result = $db->query("SHOW TABLES"); while ($row = $result->fetch_assoc()) { echo $row['Tables_in_testdb'] . "\n"; } $db->close(); ?>
这样,你的 PHP 程序就可以在不需要额外配置的情况下,直接访问 MySQL 数据库了,希望这些信息对你有所帮助!