我有一个小的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'失败。是不是在黑暗中调试乐趣? –