【问题标题】:Use function to echo SQL results from external php file使用函数从外部 php 文件中回显 SQL 结果
【发布时间】:2017-03-29 23:44:49
【问题描述】:

在尝试制作“模板引擎”时,我得到了奇怪的结果。基本上,我希望能够使用包含来自 SQL 数据库的数据的 PHP 变量。

发生的情况是PHP端一切正常,而不是需要显示此信息的页面(index.php)。

我正在研究一种从 sql 数据库中获取网站名称的方法,所以我的索引上有类似的东西:

 <?php 

 include ('php/data/sitename.php');

 ?>

 <!DOCTYPE html>
  <html>
    <head>
    <title><?php echo $sitename; ?> - Home</title>
      <!--Import Google Icon Font-->
      <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
      <!--Import materialize.css-->
      <link type="text/css" rel="stylesheet" href="css/materialize.min.css"  media="screen,projection"/>
      <!--Let browser know website is optimized for mobile-->
      <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    </head>
    <body>
    <div class="container">
        <!-- HEADER: Navbar -->
        <?php $navbar; ?>
        <!-- MAIN: Index Page contents -->
        <?php $page_index ?>
        <!-- FOOTER: Footer -->
        <?php $footer; ?>
        <?php $sitename; ?>
    </div>
      <!--Import jQuery before materialize.js-->
      <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
      <script type="text/javascript" src="js/materialize.min.js"></script>
    </body>
  </html>

此变量来自名为 sitename.php 的文件(已包含在内),代码如下:

<?php
include ('../db.php');

$sql = "SELECT id, sitename FROM GeneralData";
$getname = mysqli_query($conn, $sql);

if ($getname->num_rows > 0) {
    while($row = $getname->fetch_assoc()) {
        $sitename = $row['sitename'];
        echo $sitename;
    }
}




?>

是的,我使用了 echo $sitename;,我知道它不会回显实际数据,但我这样做是为了测试一些东西,结果如下:

  • 将文件sitename.php 包含到index.php 将什么都不做,就像它不存在一样。但是,如果我写 "echo "123";"在它上面,它将在索引上回显 123。行不通的就是我需要的。

  • 如果我直接访问 sitename.php,它只会输出我请求的正确 SQL 值,因为我告诉它回显(如我之前所述)。但是,它在索引中不起作用,根本不起作用。

另外,我将把我的项目结构留在这里。它可能会有所帮助。

我能做什么? 提前致谢!

【问题讨论】:

  • 你需要使用eval()从一个变量中执行PHP代码。
  • 这是一个非常糟糕的主意。您应该使用真正的模板库,而不是将变量放入数据中。
  • 我应该怎么做?
  • 我认为这是一个范围问题。因为 var 是在另一个文件中声明的,所以它在您的主文件中不是“可见的”。在您的 if 语句之前,添加 global $sitename = ''; 并查看是否有效。
  • 你知道 $sitename;不是全局变量吧?

标签: php mysql echo


【解决方案1】:

尝试为站点名称设置GLOBAL

GLOBAL $sitename;

GLOBALS['sitename'];
$sitename = ...

编辑 尝试使用

   $path = $_SERVER['DOCUMENT_ROOT'];
   $path .= "/yourpath/yourfile.php";
   include_once($path);

【讨论】:

  • 您希望在单击 sitename 时,会直接指向 sitename.php 对吗?你试试加href
  • 对不起,伙计。正确检查您的文件路径。使用`$path = "../db.php"; if(file_exists($path)){ 包括 $path; }else{ die("{$path} ..."); } `
  • 好的,我稍后再检查。也请对不起我虐待了你,我不应该这样做,你只是想帮忙。对不起,谢谢!
  • 不正确阅读问题是我的错。希望对你有帮助
猜你喜欢
  • 2013-02-06
  • 2019-02-10
  • 2015-08-24
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
  • 2018-09-26
相关资源
最近更新 更多