连接到数据库时如何提供凭据?

vnzz0bqm  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(361)

我正在使用存储在主机上的php文件连接到存储在同一主机上的数据库,这很好。
我正在使用下面的连接到数据库(示例连接详细信息)

<?php
$db = new PDO('mysql:host=localhost;dbname=myDB', 'myusername', 'mypassword');

我的问题是;既然我已经在我的php文件中指定了连接到服务器的密码(以及其他详细信息),那么有直接链接到我的php文件的人就不能下载它并在文本编辑器中打开它来查看这些详细信息吗?
如果是这样,我是否应该像这样将连接详细信息传递到php文件:

<?php
$server = $_POST['server'];
$database = $_POST['database'];
$username = $_POST['username'];
$password = $_POST['password'];
$db = new PDO('mysql:host=$server;dbname=$database', $username, $password);
gcmastyq

gcmastyq1#

你的变量 $server 以及 $database 在使用单引号时没有正确解释 ' . 你需要用双引号 " 正确传递变量值(有关详细信息,请参阅php中单引号字符串和双引号字符串的区别?)按如下所示更改代码。

<?php
$server = $_POST['server'];
$database = $_POST['database'];
$username = $_POST['username'];
$password = $_POST['password'];
// Replaced ' with "
$db = new PDO("mysql:host=$server;dbname=$database", $username, $password);
ee7vknir

ee7vknir2#

在我的评论中展开一点,理想情况下,您希望将其放在单独的文件中,其中一个用于全局配置,然后您可以像下面的示例一样导入到其他模块中。
config.php文件:

<?php

$HOST = 'hostname';
$DB = 'dbname';
$USER = 'username';
$PWD = 'password';
... other variables and global config ...
?>

数据库连接文件:

<?php

include 'config.php';

$db = new PDO("mysql:host=$HOST;dbname=$DB", $USER, $PWD);
?>

请注意pdo连接中的字符串是如何被双引号括起来的,因为如果是单引号,字符串插值将不起作用。

相关问题