PHP表单将空行写入MySQL数据库
我正在使用一个简单的表单向我的数据库提交一行。我在连接数据库时没有遇到错误,它确实插入了行,但它将所有值都写为空 表格如下:PHP表单将空行写入MySQL数据库,php,mysql,forms,Php,Mysql,Forms,我正在使用一个简单的表单向我的数据库提交一行。我在连接数据库时没有遇到错误,它确实插入了行,但它将所有值都写为空 表格如下: <form action="insert.php" method="post"> Título: <input type="text" name="title" /> Privacidad: <select type="text" name="privacy" /> <option value="public">Publ
<form action="insert.php" method="post">
Título: <input type="text" name="title" />
Privacidad: <select type="text" name="privacy" />
<option value="public">Publico</option>
<option value="private">Privado</option>
</select><br/>
<input type="submit" />
</form>
蒂图罗:
私隐:
普布利科
普里瓦多
这是insert.php文件:
<?
$con = mysql_connect("removed","removed","removed");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
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)
?>
是的,您应该将$\u POST[title]和$\u POST[privacy]更改为$\u POST['title']和$\u POST['privacy']
也可以更改:
要
只需分配$\u POST变量,而不是尝试将它们内联到语句中。您还必须转义POST数据中可能出现的任何引号。因此,请这样做:
$title = mysql_real_escape_string($_POST['title']);
$privacy = mysql_real_escape_string($_POST['privacy']);
$sql="INSERT INTO Poems (Title, Privacy)
VALUES
('$title','$privacy')";
另外,将内容更改为“”$\u POST['title']”,“$\u POST['privacy']”
”也不会起作用,至少因为要将数组值内联到字符串中,必须使用{}
像$correct\u string=“Hello{$\u POST['world']}”
这样做:
$sql=“插入诗歌(标题、隐私)
价值观
(“$”贴子['title'.],“$”贴子['privacy'.]。”)”;
或:
$sql=“插入诗歌(标题、隐私)
价值观
(“{$_POST['title']}”,“{$_POST['privacy']}”);
如果可以的话,你的问题来自引号。找到一种绕过它们的方法,您就完成了。抛开SQL注入/SQL格式错误这一突出问题不谈,只要值不包含任何单引号,这应该是可行的
尝试将$sql和var\u export($\u POST,true)写入每个操作的日志文件,以查看实际发生的情况。您可能需要更改数据库连接详细信息,假设它们来自实时环境。同时,我已经从您的帖子中删除了它们。正如我对您的上一个问题所做的评论,在执行查询之前,请执行echo$sql
。我使用echo$sql并获得:INSERT INTO Poems(Title,Privacy)value('blablablabla','public'),但数据库中没有写入任何内容,直接在索引中插入它确实会添加带有值的行。但是将其放在insert.php上会产生一个空行。