我想在我的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:
我做错了什么?感谢
答案 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()命令。