网站在线工作正常,但在localhost上运行显示未定义的索引和变量

时间:2012-05-22 13:32:03

标签: php localhost undefined-index

在这里恐慌! 我的论文网站在线工作正常,但在提交前一小时我发现它在本地主机上不起作用。两个或三个页面不断提出未定义的索引或变量。有人可以帮忙吗? 这是一个错误的剪辑: 注意:未定义的索引:第76行的C:\ Users .. \ Desktop \ USBWebserver v8_en \ root \ SnysbArchive \ Search.php中的表

<?php
include 'UserFunction.php';
..html omitted..
//write connect function in here
include('Connect.php'); //Connects to database
$sql = "SHOW TABLES FROM $dbname";
$result = mysql_query($sql);

if (!$result) 
{
    echo "DB Error, could not list tables\n";
    echo 'MySQL Error: ' . mysql_error();
    exit;
}
if (mysql_select_db($dbname, $conn))
{
?>
    <form method="post" action="SearchResults.php?go" id="searchform">
    In <select name="tables">
    <?php
    while ($row = mysql_fetch_row($result)) 
    {
    if ($row[0] != 'user_details' && $row[0] != 'request') 
    {
        echo '<option value="'.$row[0].'">'.$row[0].'</option>';
    }
    }
}
    ?>
    </select>
        Seach for: <input type="text" name="name"> 
    <input type="submit" name="submit" value="Search" />
</form>

<br>
<?php
$tbl=$_POST['tables'];
echo $tbl;
?>

它不喜欢这行$ tbl = $ _ POST ['tables']; 感谢

2 个答案:

答案 0 :(得分:3)

您的本地服务器的error reporting设置为高于生产服务器上的服务器。这导致您收到“较小”错误的错误消息,例如您在生产服务器上无法获得的通知。这是一件好事,因为您的生产服务器不应该显示错误消息可能对黑客有帮助,而您的本地服务器应该告诉您所有您做错了,无论大小,所以您可以构建在上线之前正确使用你的应用程序。

在您的情况下,$_POST['tables']未设置且您的本地服务器正在报告。它也被您的生产服务器捕获,但由于您的错误报告设置,您没有得到通知(可能在您的错误日志中除外)。

<强>更新

要修复错误,请在将其分配给变量之前检查该值是否存在:

$tbl = (isset($_POST['tables'])) ? $_POST['tables'] : ''; 

答案 1 :(得分:2)

你总是可以把

error_reporting(E_ALL ^ E_NOTICE);

在页面顶部,这将阻止PHP抱怨已引用但尚不存在的变量。

最好做@john conde建议的内容,我的建议将删除错误,但允许你编码为sloppily。邋code的代码不是最好的..