无法包含 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
iOS,Swift:如何保存包含自定义对象的数组以便我可以加载以供重用?
Laravel - php artisan migrate - SQLSTATE[HY000] [14] 无法打开数据库文件