user1634610
问问题
2974 次
2 回答
1
您遇到的问题是由于代码的执行顺序。请记住,PHP 是一种解释型语言,这意味着变量的内容是从脚本的“从上到下”设置和使用的。用简单的英语来说,这意味着因为您的<title>
标签 (in header.php
) 出现在您的查询实际在代码主体中运行之前,所以在选择自定义标题之前很久就已经设置了标题。
基本上,您可以采取两种主要方法来解决此问题:
1) 将查询放在包含的行上方header.php
,以便在实际使用/解释变量之前选择动态标题。
2)重新考虑您的设计模式,以便可以在包含文件的主体中更改变量,并且您不必确保如此严格的执行顺序。这可以通过多种方式完成:查看输出控制和缓冲,或者更好的是,将您的逻辑与输出/表示完全分开(即 MVC),以便您可以对变量做任何您喜欢的事情,只有在那之后才是您的页面居然吐出来了。
至于为什么您更新的代码不起作用,那是因为您可能还没有运行 SELECT 查询,但是您正在尝试访问它返回的 $row 对象。基本上,您无法访问查询的结果,因为 - 在代码中 - 查询甚至还没有发生!
祝你好运!
于 2012-09-01T23:55:34.590 回答
0
我在评论中的回答仍然有效,将选择部分放在require
:
<?php
//Do all the selects:
$bios = mysql_query( "SELECT *
FROM `comp_bios`
WHERE `comp_bios_id` = '{$id}'") or die(mysql_error());
$row = mysql_fetch_array($bios);
//Use this how ever you want: $row[comp_bios_position]
$title = "Biographies of Company Executives : " . $row[comp_bios_position];
require('includes/header.php');
?>
你将$title
拥有header.php
于 2012-09-01T23:37:41.880 回答