【问题标题】:Connecting to a mysql database without keeping details in the script连接到 mysql 数据库而不在脚本中保留详细信息
【发布时间】:2014-07-15 02:51:57
【问题描述】:

我正在尝试为数据库连接创建一个单独的登录文件,因为我不太喜欢在需要数据库访问的每个页面上拥有所有访问详细信息。

我在我的服务器上创建了一个单独的文件,其中包含成功登录所需的变量,然后使用;

include_once('path_to_file/filename.php');

获取变量然后使用;

$dbconnection = mysqli_connect("$hostname","$username","$password","$database") or die ("Could not connect to the server");

但每次连接都会失败。我尝试在我尝试包含的文件中包含连接脚本,但随后我收到此消息:

Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2)

我不太确定如何解决这个问题,但我服务器中的每个页面或多或少都会访问数据库,我认为在各处复制登录详细信息一定会带来安全风险!

有人有什么建议或替代方案吗?

数据库记录格式为:

<?php
# parameters for connection to MySQL database
    $hostname="hostname";
    $database="databasename";
    $username="username";
    $password="password";
?>

附:我也尝试过 require 并得到了相同的结果。

【问题讨论】:

  • echo $hostname;echo $username;?你得到了什么
  • 包含的文件到底长什么样?
  • 我可以从主脚本中回显变量,但 mysqli_connect 不会接受它们。我已经更新了上述内容以正确格式化代码。
  • 去掉mysqli_connect命令的引号:mysqli_connect($hostname, $username, $password, $database)
  • @Reeno 从技术上讲,这仍然可以工作,因为双引号字符串仍然可以识别变量

标签: php mysql include require


【解决方案1】:

另外,当在 PHP 中使用多个 MySQL 连接时,您必须提供第四个参数,告诉 PHP 像这样实际创建新连接(这非常重要,如果您使用到同一主机的两个连接):

$db1 = mysql_connect($host1, $user1, $passwd1, true);
$db2 = mysql_connect($host2, $user2, $passwd2, true);

如果没有使用第四个参数,并且参数相同,那么 PHP 将返回相同的链接,并且不会建立新的连接。

在此之后,您应该使用带有额外参数的“mysql_query”,而不是定义要使用的连接:

$res1 = mysql_query($sql1, $db1) or die(mysql_error($res1));
$res2 = mysql_query($sql2, $db2) or die(mysql_error($res2));

http://www.php.net/manual/en/function.mysql-connect.php

【讨论】:

  • 技术上权限755就够了。
  • mysql 数据库和服务器工作正常,不是本地的。如果我在文件中声明变量,我可以很好地连接到它,我似乎无法导入它们 - 我还从 mysqli_connect 行中删除了引号,没有区别。看起来它在尝试连接之前由于某种原因没有获取变量,但我不确定。
  • 您如何将数据库详细信息传递给您创建的单独文件
  • 我没有传递它们,我在 notepad++ 中编写了文件,将其制作为 .php 文件并将其上传到我的服务器。该文件只是变量的选择。然后我使用 include_once('path_to_file/filename.php'); 将文件调用到页面;
  • mysql 返回错误时能否回显数据库连接变量。设置一个条件,如 if($filename){mysql1_connect().....}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
相关资源
最近更新 更多