如何在php中传递MySQL连接字符串中的变量
我有一个txt文件,其中包含由换行符分隔的登录凭据。我想从该文件中提取数据,并根据该数据设置连接字符串。这是代码如何在php中传递MySQL连接字符串中的变量,php,mysql,Php,Mysql,我有一个txt文件,其中包含由换行符分隔的登录凭据。我想从该文件中提取数据,并根据该数据设置连接字符串。这是代码 $db = array(3); $myFile = "sqlaccess.txt"; $handle = fopen($myFile, 'r'); if(!feof($handle)) { for($i=0;$i<4;$i++) { $db[$i] = fgets($handle); echo $db[$i
$db = array(3);
$myFile = "sqlaccess.txt";
$handle = fopen($myFile, 'r');
if(!feof($handle))
{
for($i=0;$i<4;$i++)
{
$db[$i] = fgets($handle);
echo $db[$i]; echo "<br>";
}
}
else
{
fclose($handle);
}
$dbhost = $db[0];
$dbuser = $db[1];
$dbpass = $db[2];
$dbname = $db[3];
这是行不通的。连接失败
但如果我硬编码如下,则连接成功:
$conn = mysqli_connect('localhost','root','password', 'Newdb');
但是硬编码并不是一个好的实践。因此,我的代码中可能出现的错误是什么???不会从返回的字符串中删除\n
,因此您需要自己修剪它们:
$db[$i] = trim(fgets($handle));
或者使用该函数替换读取循环:
$db = file('sqlaccess.txt');
如果选择后者,代码将简化为:
$myFile = 'sqlaccess.txt';
$db = file($myFile);
$dbhost = $db[0];
$dbuser = $db[1];
$dbpass = $db[2];
$dbname = $db[3];
旁注:我希望您使用适当的预防措施来保护该文本文件。另外,对于为什么要使用这种方法,是否有特定的原因?是否确保$db在引用的每个索引中都有一个值?应该有
$db[$i]=trim(fgets($handle))
您可以使用file()
将文件作为数组返回,而不是所有额外的fopen/for代码。@Fred ii-是的,我正在加密该文件并解密以供读取。没有确切的理由说明我为什么使用这种方法。“我只是在用php学习和尝试这些东西。”肖恩·布莱特非常感谢。我认为“\0”正在引发问题。谢谢你把它清理干净!今后请不要鼓励此类不良行为。虽然这是一个有用的答案,但他希望做点什么,并认为这就是如何做到的。@I感谢您的关注。我不是专业的。只是为了好玩。此外,我想从“.properties”文件读取登录凭据(而不是像您的方法那样硬编码凭据)是一种很好的做法。我稍后也会尝试你的方法。这是我的学习阶段。冷静
$myFile = 'sqlaccess.txt';
$db = file($myFile);
$dbhost = $db[0];
$dbuser = $db[1];
$dbpass = $db[2];
$dbname = $db[3];