我有一个页面,我试图从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
答案 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()变体。