【发布时间】:2017-07-10 16:18:21
【问题描述】:
<form method='post' action=''>
Category name: <input type='text' name='cat_name' />
Category description: <textarea name='cat_desc' /></textarea>
<input type='submit' value='Add category' />
</form>
<?php
if($_SERVER['REQUEST_METHOD'] != 'POST')
{
$catname=mysql_real_escape_string('cat_name');
$catdesc=mysql_real_escape_string('cat_desc');
$sql = mysql_query("INSERT INTO fcategories (cat_name, cat_desc)
VALUES('','$catname','$catdesc')");
$result = mysql_query($sql);
if(!$result)
{
//something went wrong, display the error
echo 'Error' . mysql_error();
}
else
{
echo 'New category successfully added.';
}
}
?>
我已包含与数据库的连接。当我运行代码时,我的表单底部有一个错误。
【问题讨论】:
-
您的代码容易受到SQL injection 攻击。您应该通过mysqli 或PDO 驱动程序使用带有绑定参数的预处理语句。 This post 有一些很好的例子。
-
不要使用
mysql_*函数。它们自 v5.5(2013 年 6 月)起已被弃用,自 v7.0(2015 年 12 月)起已被删除。而是将mysqli_* 或PDO 函数与prepared statements 和bound parameters 一起使用。 -
您声明了两个字段,但提供了三个值。
-
您指定了 2 个字段名称并传递了 3 个值
-
您运行了两次查询,因此第二次查询失败。
$sql要么是 mysql_results,要么为空。