麻烦简单的PHP-MySQL表单

时间:2011-07-27 09:05:31

标签: php mysql forms

我想在我的MySQL数据库中创建一个2字段输入表单。我连接到数据库没有问题,甚至可以发布,如果我想,但表单给出错误。 (此时我已经连接到数据库,我可以测试它是否正常工作)

这是表格:

<form action="insert.php" method="post">
Title: <input type="text" name="title" />
Privacy: <select type="text" name="privacy" />
  <option value="public">Publico</option>
  <option value="private">Privado</option>
</select>
<input type="submit" />
</form>

这是insert.php文件:

<?  
mysql_select_db("copoetry", $con);
$sql="INSERT INTO Poems (Title, Privacy)
VALUES
('$_POST[title]','$_POST[privacy]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";
mysql_close($con)
?>

当我按提交时,我收到此错误:

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /home/content/02/6945202/html/copoetry/insert.php on line 2

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/content/02/6945202/html/copoetry/insert.php on line 7
Error:

我做错了什么?感谢

4 个答案:

答案 0 :(得分:2)

您的$con变量应与mysql_connect();保持与数据库的连接,您似乎在某个时候删除了该行。

EG:

$con = mysql_connect('host', 'user', 'pass') or die(mysql_error());

成功完成此操作后,所有mysql_*个调用都将使用该连接,因此您无论如何都可以删除$ con变量。

同时 不要忘记逃避输入以便安全,将$_POST, $_GET$_REQUEST变量直接插入mysql是非常不安全的。至少在上运行从表单或Cookie中获得的每个输入<{3}}

EG

// Create a shortcut function somewhere early in your script
function mes($input) { 
    return mysql_real_escape_string($input);
}

// SQL Example
$sql = "INSERT INTO Poems (Title, Privacy) VALUES ('".mes($_POST['title'])."','".mes($_POST['privacy'])."')";

注意字符串连接(使用fullstop)来分隔字符串/变量。

答案 1 :(得分:1)

你错过了mysql_connect()。尝试添加此功能。 使用来自$_GET/$_POST/$_REQUEST的任何内容运行查询也是非常不安全的。

答案 2 :(得分:0)

您的数据库没有联系; - )

答案 3 :(得分:0)

我认为您忘记指定mysql_connect()命令。