我有一個小的PHP腳本,只是連接到數據庫並將某個錶轉儲到屏幕上。PHP腳本不會查詢數據庫
// Replaced with expanded snippet below
此代碼拋出錯誤,說$menu
爲NULL。但相同的腳本
// Also replaced with expanded snippet below
執行的精細和它們使用相同的文件,以獲得$menu
用相同的連接特性。 mysql_connect
和mysql_select_db
函數都被稱爲func() or die(mysql_error())
,我沒有從它們回來的任何錯誤。任何想法可能是什麼原因?
這裏是我的連接代碼:
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_menu = "";
$database_menu = "";
$username_menu = "";
$password_menu = "";
$menu = mysql_connect($hostname_menu, $username_menu, $password_menu) or die(mysql_error());
$menu_db = mysql_select_db($database_menu, $menu) or die(mysql_error());
?>
我節錄的變量。我已經檢查過了,沒有文件陰影或使用$菜單用於其他目的。
這是索引頁。我沒有寫這個,只是你知道的。
<?PHP
session_start();
if($_SESSION['login'] != "true"){
header("Location: login.php");
}else{}
?>
<?PHp include("includes/top.php"); ?>
<?PHP include("includes/menu.php"); ?>
<div id="main_page">
<div id="page2">
<?PHP
if($_REQUEST['page'] == ""){
include("pages/index.php");
}else{
include("pages/".$_REQUEST['page'].".php");
}
?>
</div>
</div>
<?PHP include("includes/bottom.php"); ?>
其他PHP包括實際上是純HTML,並沒有定義任何額外的變量。上面的第一個代碼段擴展爲
<!-- semester1.php -->
<?php
include('includes/db.php');
function spew_bookings() {
$roomquery = "SELECT * FROM php_bookingtable";
$result = mysql_query($roomquery, $menu);
while($row = mysql_fetch_assoc($result)) {
foreach($row as $key => $value) {
echo $key; echo '<br>'; echo $value;
}
}
}
function spew_user_bookings(){
}
if ($_SESSION['deptid'] == 'Central Administrator') {
spew_bookings();
} else {
spew_user_bookings();
}
?>
幷包含在上面的index.php中。另一個文件被重定向,不包括在內,而且看起來是這樣的:
<?PHP
session_start();
include("../includes/db.php");
$loginQuery = "SELECT * FROM php_usertable WHERE username = '".$_REQUEST['username']."'";
$loginResult = mysql_query($loginQuery, $menu);
$loginRow = mysql_fetch_array($loginResult);
$password = $_REQUEST['password'];
//-- get their department from their department id --//
$deptQuery = "SELECT * FROM php_departmenttable WHERE deptid = '".$loginRow[3]."'";
$deptResult = mysql_query($deptQuery, $menu);
$deptRow = mysql_fetch_array($deptResult);
if(md5($password) == $loginRow[2]){
//-- set all the users information into sessions --//
$_SESSION['username'] = $loginRow[1]; //-- from usertable --//
$_SESSION['deptid'] = $deptRow[1]; //-- from depttable --//
$_SESSION['extension'] = $loginRow[4];
$_SESSION['email'] = $loginRow[5];
$_SESSION['login'] = "true";
header("Location: ../index.php");
}else{
header("Location: ../login.php");
}
?>
我知道有安全漏洞在這裏,但他們現在是不是一個問題。
如果您希望我們幫助調試,您將不得不分享您包含的其他代碼。沒有辦法讓'$ menu'成爲'NULL'。即使失敗的'mysql_connect'調用會導致'FALSE',而不是'NULL'。 –
@Dan:我在連接腳本中編輯過。 – Puppy
這是不可能的,你包括該代碼和'$菜單'爲空,除非有額外的代碼。我希望你沒有包含那個文件,要麼不使用'include' /'require',要麼你提供了一個錯誤的路徑,'include'失敗。是不是在黑暗中調試樂趣? –