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上会产生一个空行。