我有几个文件包含如下:
的index.php
require("database.php");
require("header.php");
require("template.php");
require("footer.php");
database.php中
require("constants.php");
class connect{
public function connect(){
mysql_connect(LOCALHOST,USER,PASS);
}
}
constants.php
define('LOCALHOST','localhost');
define("USER","username");
define("PASS","password");
define("PRICE1","10.00");
define("PRICE2","11.00");
define("PRICE3","12.00");
define("PRICE4","13.00");
的template.php
*html code*
*ajax code*
*ajax output*
**输出错误的是ajax加载 load.php(ajax get)
require(database.php);
then html code
输出错误:
注意:使用未定义的常量PRICE1 - 在第34行的web / site / files / template.php中假设为'PRICE1'
任何人都有任何消化,因为我被困在为什么没有调用常数,因为我已经定义了它
让我澄清一下这个问题:
常量包含在database.php中,database.php使用常量进行连接,也可以正常工作。 当template.php中需要database.php时,会显示错误。问题是当常量处理database.php
时,为什么不传递常量如果我运行load.php,那里仍然会出现错误消息 但我再次在那里运行数据库,但是没有任何常量可以从load.php调用
请参阅完整的load.php代码:
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
if(isset($_GET['label']) && $_GET['type'] == "yes" && $_GET['dif'] == "label"){
try{
require_once("../classes/database.php");
$db = new MySQL();
$connection = $db->connect();
$sql = "SELECT * FROM `label` WHERE id=?";
$result = $db->prepare($sql,array($_GET['label']),$connection);
if(!$result){
throw new Exception("Error: ");
}
$number = $result['personalisedlines'];
for($i=0;$i<$number;$i++){
echo "<label>Line ".($i+1)."</label>\n\r<br />\n\r";
echo "<input type='hidden' name='label_price' value='".PRICE1."' />";
echo "<input type='text' name='field".$i."' />\n\r<br />\n\r";
}
} catch(Exception $e){
throw $e;
}
}
if($_GET['type'] == "yes" && $_GET['dif'] == "engraving"){
echo "<br />\n\r<label>Engraved Message</label>\n\r<br />\n\r";
echo "<input type='hidden' name='engraving_price' value='".PRICE2."' />";
echo "<textarea cols='30' rows='10' name='personalisedbox' row='10'></textarea>\n\r<br />\n\r";
}
if($_GET['type'] == "yes" && $_GET['dif'] == "printed"){
echo "<br />\n\r<label>Printed Message</label>\n\r<br />\n\r";
echo "<input type='hidden' name='printed_price' value='".PRICE3."' />";
echo "<textarea cols='30' rows='10' name='personalisedbox' row='10'></textarea>\n\r<br />\n\r";
}
if($_GET['type'] == "yes" && $_GET['dif'] == "flutes"){
echo "<br />\n\r<label>Engraved Message</label>\n\r<br />\n\r";
echo "<input type='hidden' name='engraving_price' value='".PRICE4."' />";
echo "<textarea cols='30' rows='10' name='personalisedflutes' row='10'></textarea>\n\r<br />\n\r";
}
?>
答案 0 :(得分:1)
我还不知道为什么要求没有抓住,具有正确的范围。也许你把问题放在问题中的方式与你的情况完全不同?请显示更多代码。
但你可以做的是:
将require
更改为require_once
...
现在将require_once()
行复制/粘贴到您希望使用常量的每个php文件中。 PHP将确保只需执行一次require,因此您不会在重新定义常量时遇到任何错误。
答案 1 :(得分:0)
在constants.php
中加入templates.php
。