2015-01-13 2 views
0

У меня есть страница, с которой я пытаюсь извлечь данные из базы данных msqsql. Я получил его для работы с hep некоторых людей на этом сайте. Я попытался изменить, где переменные соединения tp указывают на файл конфигурации. \, И я даже не получаю сообщение об ошибке. У меня есть другой файл, который использует require_once для указания одного и того же файла конфигурации, и он отлично работает, но это гораздо более сложная строка. Я думал, что могу просто скопировать 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

+0

Возможно, вы должны добавить все пути файлов, отредактировав свой вопрос. –

ответ

1

Вы используете require_once(). Объем этого «один раз» равен UNIVERSAL. Как только вы require_once() что файл куда угодно в сценарии, и все другие require_once() для того же файла собираются стать не-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().

+0

также, вероятно, стоит отметить, что для таких файлов, как 'function.php', включая этот файл в глобальной области видимости и снова в другом месте, вы получите фатальную ошибку, поскольку функции уже определены и не могут быть переопределены, поэтому require_once обычно используется. –