1

这里有恐慌!我的论文网站在网上运行良好,但在提交前一小时我发现它在本地主机上不起作用.. 两三个页面不断出现未定义的索引或变量。有人可以帮忙吗?这是一个错误的片段:注意:未定义的索引:第 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']; 谢谢

4

2 回答 2

4

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

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

更新

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

$tbl = (isset($_POST['tables'])) ? $_POST['tables'] : ''; 
于 2012-05-22T13:34:29.073 回答
3

You could always put

error_reporting(E_ALL ^ E_NOTICE);

In the top of the page, this will prevent PHP complaining about variables that are referenced but do not yet exist.

Better to do what @john conde suggested, my suggestion will remove the error but allow you to code as sloppily. Sloppy code isn't the best..

于 2012-05-22T13:47:59.910 回答