具有奇怪结果的 PHP include() 函数
a PHP include() function with a strange outcome
我最近才开始学习PHP,遇到了一个令人沮丧的问题,代码看起来不错,但就是行不通,连教我的人都不知道是什么原因造成的.下面我把我的代码贴给你。
<?php
header("content-type: text/html; charset = UTF-8");
$con = new mysqli();
$con -> connect("localhost", "root" ,"");
$con -> select_db("test_db");
$con -> query("set names UTF8");
$query = $con -> query("SELECT * FROM TITLES LIMIT 0,2");
$num = $query -> num_rows;
for ($i=1 ; $i <= $num; $i++)
{
$result = $query -> fetch_array();
echo "<table style ='float: left'>";
echo "<tr><th>".$result["TITLE"]."</th><tr>";
echo "<tr><td>";
include("$i.php");
echo "</td></tr>";
echo "</table>";
}
?>
结果变成这样:
顺便说一句,我在 MAC 中使用 XAMPP 7.0.1。
<?php
header("content-tupe: text/html; charset = UTF-8");
$con = new mysqli();
$con -> connect("localhost", "root" ,"");
$con -> select_db("test_db");
$con -> query("set names UTF8");
$query = $con -> query("SELECT * FROM PHP_MANUAL LIMIT 0,6");
?>
<ul>
<?php
while ($result = $query -> fetch_array())
{
echo "<li>".$result["CONTENT"]."</li>";
}
?>
</ul>
<?php
header("content-type: text/html; charset = UTF-8");
$con = new mysqli();
$con -> connect("localhost", "root" ,"");
$con -> select_db("test_db");
$con -> query("set names UTF8");
$query = $con -> query("SELECT * FROM TITLES LIMIT 0,2");
$i = 0;
while($result = $query -> fetch_assoc())
{
$i++;
echo "<table style ='float: left'>";
echo "<tr><th>".$result["TITLE"]."</th><tr>";
echo "<tr><td>";
include("$i.php");
echo "</td></tr>";
echo "</table>";
}
?>
使用 while
遍历行。
当您将一个文件包含在另一个 PHP 文件中时,包含文件中的所有变量都将处于活动状态并可访问以供操作。
在您的情况下,您使用的是 $query 和 $result 变量,它们 覆盖 您开始的变量。所以 TITLES 的 $query 已经改变,因此即使你想使用 unset() 它也不会工作。
示例:基本包含示例
vars.php
<?php
$color = 'green';
$fruit = 'apple';
?>
test.php
$color = 'yellow';
$fruit = 'banana';
echo "A $color $fruit"; // A yellow banana
include 'vars.php';
echo "A $color $fruit"; // A green apple
?>
来源:http://php.net/manual/en/function.include.php
您还可能希望将 $con 变量放入单独的 PHP 文件中并包含一次。详细了解 PHP 包括:
我最近才开始学习PHP,遇到了一个令人沮丧的问题,代码看起来不错,但就是行不通,连教我的人都不知道是什么原因造成的.下面我把我的代码贴给你。
<?php
header("content-type: text/html; charset = UTF-8");
$con = new mysqli();
$con -> connect("localhost", "root" ,"");
$con -> select_db("test_db");
$con -> query("set names UTF8");
$query = $con -> query("SELECT * FROM TITLES LIMIT 0,2");
$num = $query -> num_rows;
for ($i=1 ; $i <= $num; $i++)
{
$result = $query -> fetch_array();
echo "<table style ='float: left'>";
echo "<tr><th>".$result["TITLE"]."</th><tr>";
echo "<tr><td>";
include("$i.php");
echo "</td></tr>";
echo "</table>";
}
?>
结果变成这样:
顺便说一句,我在 MAC 中使用 XAMPP 7.0.1。
<?php
header("content-tupe: text/html; charset = UTF-8");
$con = new mysqli();
$con -> connect("localhost", "root" ,"");
$con -> select_db("test_db");
$con -> query("set names UTF8");
$query = $con -> query("SELECT * FROM PHP_MANUAL LIMIT 0,6");
?>
<ul>
<?php
while ($result = $query -> fetch_array())
{
echo "<li>".$result["CONTENT"]."</li>";
}
?>
</ul>
<?php
header("content-type: text/html; charset = UTF-8");
$con = new mysqli();
$con -> connect("localhost", "root" ,"");
$con -> select_db("test_db");
$con -> query("set names UTF8");
$query = $con -> query("SELECT * FROM TITLES LIMIT 0,2");
$i = 0;
while($result = $query -> fetch_assoc())
{
$i++;
echo "<table style ='float: left'>";
echo "<tr><th>".$result["TITLE"]."</th><tr>";
echo "<tr><td>";
include("$i.php");
echo "</td></tr>";
echo "</table>";
}
?>
使用 while
遍历行。
当您将一个文件包含在另一个 PHP 文件中时,包含文件中的所有变量都将处于活动状态并可访问以供操作。
在您的情况下,您使用的是 $query 和 $result 变量,它们 覆盖 您开始的变量。所以 TITLES 的 $query 已经改变,因此即使你想使用 unset() 它也不会工作。
示例:基本包含示例
vars.php
<?php
$color = 'green';
$fruit = 'apple';
?>
test.php
$color = 'yellow';
$fruit = 'banana';
echo "A $color $fruit"; // A yellow banana
include 'vars.php';
echo "A $color $fruit"; // A green apple
?>
来源:http://php.net/manual/en/function.include.php
您还可能希望将 $con 变量放入单独的 PHP 文件中并包含一次。详细了解 PHP 包括: