Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中传递MySQL连接字符串中的变量_Php_Mysql - Fatal编程技术网

如何在php中传递MySQL连接字符串中的变量

如何在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

我有一个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];  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];