【发布时间】:2016-06-28 19:29:16
【问题描述】:
在我的 php 文件中使用一些简单的 sql 查询注入来处理一个小项目。我创建了一个functions.php 文件,其中包含一个名为function displayimage() 的函数。我将我的函数文件包含在我的索引文件中并像这样使用该函数
index.php
<div class="col-lg-2">
<?php displayimage(); ?>
</div>
函数.php
function displayimage()
{
$dbCon = mysqli_connect("localhost", "root", "root", "testdb");
if (mysqli_connect_errno()) {
echo "Failed to connect: " . mysqli_connect_error();
}
$sql= "SELECT * FROM `images` ORDER BY `images`.`id` DESC ";
$query=mysqli_query($dbCon, $sql);
if ($row = mysqli_fetch_array($query))
{
echo '<img class="img-responsive" style="margin-top: 10px;" src="data:image;base64,'.$row[2].' "> ';
}
mysqli_close($dbCon);
}
?>
所以它工作正常但是.. 我试图通过将数据库连接放在一个单独的文件中来清理我的代码,并像include('connection.php'); 一样包含它。不幸的是,我的代码不再起作用,并且内容不会显示在我的索引文件中。我的 PHPStorm 说 $dbCon 现在是一个无法定义的变量。我在这里做错了什么?
新函数.php
function displayimage()
{
include('connection.php');
$sql= "SELECT * FROM `images` ORDER BY `images`.`id` DESC ";
$query=mysqli_query($dbCon, $sql);
if ($row = mysqli_fetch_array($query))
{
echo '<img class="img-responsive" style="margin-top: 10px;" src="data:image;base64,'.$row[2].' "> ';
}
mysqli_close($dbCon);
}
?>
连接.php
$dbCon = mysqli_connect("localhost", "root", "root", "testdb");
if (mysqli_connect_errno()) {
echo "Failed to connect: " . mysqli_connect_error();
}
【问题讨论】:
-
请添加connection.php的内容
-
这是一个变量范围问题。
-
$dbCon在函数内部不存在,函数具有本地范围,而$dbCon(可能)在全局范围内创建。您需要将连接传递给函数displayImage($dbCon)和/或重构您的代码。请不要使用全局变量。 -
函数不“支持”未包含或限定在其中的变量。您需要将变量设为全局变量,这是一个坏主意,或者召回它
-
@GlennGijsberts - 是的,您的包含代码将起作用。顺便说一句:如果你不做任何像插件这样的小东西,就不要使用全局变量......
标签: php mysql mysqli database-connection