令人困惑的代码oO!。自从我的代码看起来像这样已经很久了。所以很难弄清楚,哈哈。但是,当涉及到 mysql 错误时——当某些东西没有正确地为我提供错误时(当调试看起来像这样时)——我逐行阅读。然后我回显查询,并使用 mysqladmin 或其他 sql 工具对其进行测试。我也会运行 $query = mysql_query($query) 或 die(mysql_error()); 在同一行进行快速调试。
值得注意的问题
a) 切换到mysqli为将来的 PHP 更改做好准备。如果您喜欢 mysql,请熟悉 mysqli。
- 您没有选择数据库。mysql_select_db
- 重要的是发布数据 - 这意味着您确实需要过滤信息。为了允许使用插入将任何内容输入到数据库中,而不转义危险字符 - 您将留下很多东西可玩;)。即使,如果你是唯一一个输入信息的人,我在下面做了一些改动。'{$menu_name}' 带有单引号,但 {$position} 和 {$visible} 没有单引号 - 几个月后返回时不一致会令人困惑。
为什么 ('{$menu_name}', {$position}, {$visible}) 不是 ('{$menu_name}', '{$position}', '{$visible}') ?反而。
更有条理
<?
$host = "localhost"; // hostname
$user = "root"; // username
$pass = "P@ssword"; // password
$db = ""; // database name
$connection = mysql_connect($host,$user,$pass) or die("Database connection failed: ".mysql_error());
$database = mysql_select_db($db,$connection) or die("DB Selection Error: ".mysql_error());
$menu_name = mysql_real_escape_string($_POST['menu_name']);
$position = mysql_real_escape_string($_POST['position']);
$visible = mysql_real_escape_string($_POST['visible']);
$query = "INSERT INTO `subjects` (`menu_name`, `position`, `visible`) VALUES ('{$menu_name}', '{$position}', '{$visible}')";
$result = mysql_query($query, $connection) or die(mysql_error());
if ($result){ // I would usually use mysql_insert_id as a validation from auto_increment tables.
header("Location:staff.php");
exit;
} else {
echo "<p> There was an error when creating the subject </p>
<p>". mysql_error()."</p>" ;
}
?>