require_once无法处理外部文件

时间:2015-01-13 18:48:12

标签: php require-once

我有一个页面,我试图从msqsql DB中提取数据。我得到了这个网站上的一些人的工作。我试图改变连接变量指向配置文件的位置。\,我甚至没有得到错误。我有另一个文件,使用require_once指向相同的配置文件,它工作正常,但它是一个更复杂的字符串。我以为我可以复制require_once来在我的页面上设置它,但我错过了一些东西。

我的页面有效,但我不想直接在此页面上使用连接字符串。

/ *连接链接* /

<?php

$link = mysqli_connect("xxx.xxx.xxx.xxx", "un", "pw", "db");

/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

$type = "mixers";

/* create a prepared statement */
if ($stmt = mysqli_prepare($link, "SELECT record_number, Base_Price FROM Products
WHERE Unit_Product='u'")) {

/* bind parameters for markers */
mysqli_stmt_bind_param($stmt, "s", $type);

/* execute query */
mysqli_stmt_execute($stmt);

/* bind result variables */
mysqli_stmt_bind_result($stmt, $product, $price);

/* fetch value */
while(mysqli_stmt_fetch($stmt)) {     
$products[$product] = $price;    }



/* close statement */
mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);

?>

<?php echo $products['1014']; ?>

下面是与require_once一起使用的我的零件页面的示例。我试图复制整个代码,然后我将它配对,但我甚至没有收到错误。

        <?php

ini_set('display_errors',1); 
error_reporting(E_ALL);
require_once('./inc/functions.php');

if(isset($_REQUEST['catid']) && is_numeric($_REQUEST['catid'])) {
$cat_rn = $_REQUEST['catid'];
display_category($cat_rn);
} else {
echo 'Invalid catid provided. <a href="/">Return Home</a> try something like 
<a href="'.$_SERVER['PHP_SELF'].'?catid=140">'.$_SERVER['PHP_SELF'].'?catid=140</a>';

}

function display_category($cat_rn) {
    require_once('./inc/db_config.php');
    require_once('./inc/functions.php');
    $con = mysql_connect($catdb['host'],$catdb['user'],$catdb['pass']);
    if (!is_resource($con))
    {
    die('Could not connect: ' . mysql_error());
    }
    mysql_select_db($catdb['dbname'], $con);

非常感谢任何帮助。我知道php,但我学到了很多东西。 -Michael

1 个答案:

答案 0 :(得分:1)

您正在使用require_once()。 “曾经”的范围是 UNIVERSAL 。只要您require_once()在脚本中存在ANYWHERE文件,同一文件的所有其他require_once()将成为no-OPS并跳过该文件:

inc.php:

<?php
echo 'hello';

的script.php:

<?php
require_once('inc.php');   // runs, prints "hello";

function foo() {
   require_once('inc.php'); // require SKIPPED because file already included
}

foo();

以上代码仅打印hello ONCE。

如果要多次包含/要求文件,则不能使用_once()变体。