无法包含 connection.php 文件以重用与数据库的连接

Posted

技术标签:

【中文标题】无法包含 connection.php 文件以重用与数据库的连接【英文标题】:Unable to include connection.php file to reuse the connection to database 【发布时间】:2018-04-14 21:48:42 【问题描述】:

我在将连接文件包含到我的 php 页面时遇到了一些问题。

我有这个 connessione.php,它从 login.php 接收用户和密码以连接到我的数据库:

<?php   
    $host="localhost";
    $user=$_POST["username"];
    $password= $_POST["password"];
    $database = "Park";
    $lingua=$_POST["lingua"];
    $myconn= new mysqli($host,$user,$password,$database); 

    if($myconn->connect_error)
        Header('Location: login.html');
    else
        Header('Location: form.html');
    
?> 

这是我应该使用连接的 form.php。

<?php
    require ('connessione.php');
    $query="SELECT CodicePin from Pin";
    $res=$myconn->query($query);
    $row=$res->fetch_array(MYSQLI_NUM);
    print_r($row);
?> 

问题是它无法使用在 connessione.php 中建立的 $myconn,当我尝试使用正确的用户/psw 登录时,我将被重定向到 login.php。

但是,如果我尝试像这样修改 connessione.php 并且它执行查询没有问题。

<?php   
        $host="localhost";
        $user=$_POST["username"];
        $password= $_POST["password"];
        $database = "Park";
        $lingua=$_POST["lingua"];
        $myconn= new mysqli($host,$user,$password,$database); 

        if($myconn->connect_error)
            Header('Location: login.html');
        else
        $query="SELECT CodicePin from Pin";
        $res=$myconn->query($query);
        $row=$res->fetch_array(MYSQLI_NUM);
        print_r($row);
        
    ?> 

如何在其他 php 页面中使用 connessione.php 建立的相同连接? 谢谢,对不起我的英语:)

【问题讨论】:

您的标题“无法包含connection.php文件”与您之后使用的文件名相矛盾。 使用 POST 变量的数据库连接?奇怪... POST 变量仅在表单发送后的页面中可用。 只有当 POST 数组被填满时,您的连接才会被处理,这就是它不起作用的原因。你为什么要这样做,我无法理解。 你必须有静态连接配置才能在所有文件中使用 POST 不会在那里工作。 您必须使用会话/cookies,这样您的服务器才能在客户端发出其他请求时记住它们。 【参考方案1】:

在连接页面中,我命名为 DbConfig.php

 // DB connection
    $host="localhost"; // Host name
    $username="root"; // Mysql username
    $password=""; // Mysql password
    $db_name="demoproject"; // Database name

    // Connect to server and select databse.
    $con=mysqli_connect("$host", "$username", "$password","$db_name") or die("cannot connect");
if(mysqli_connect_errno())
    echo "Failed to Connect Database: ". mysqli_connect_error();
//You can redirect here
    exit();

在进程页面中

require_once("DbConfig.php");

$sql="SELECT CodicePin from Pin";
$result=mysqli_query($con,$sql);
$row=mysqli_fetch_array($result);
var_dump($row);

【讨论】:

我给你一个代码演示后你需要什么解释? 为什么他的代码不工作,你做了什么让它工作,你为什么这样做。 PHP 是开源的,任何人都可以按照自己的方式编写。 @hungrykoala【参考方案2】:

您必须存储您的登录帖子(会话将是最佳匹配), 然后在 mysqli 连接上使用 $_SESSION;

记得在使用前开始你的会话

只有在您发送登录表单时才会发送帖子,因此如果您浏览您的第一个帖子会丢失

【讨论】:

以上是关于无法包含 connection.php 文件以重用与数据库的连接的主要内容,如果未能解决你的问题,请参考以下文章

在函数中包含我的 connection.php 不起作用 php

重用UITextField值来控制仪表的弧长

iOS,Swift:如何保存包含自定义对象的数组以便我可以加载以供重用?

Laravel - php artisan migrate - SQLSTATE[HY000] [14] 无法打开数据库文件

无法在 ReactJS 中重用复选框功能

设置可重用标头时出错:'无法在包中加载 NIB