<?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']; 感谢
答案 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的代码不是最好的..