【发布时间】:2012-11-17 12:13:41
【问题描述】:
我对此真的很陌生,我遇到了一个问题,过去几天一直在伤害我的大脑,我尝试搜索我的问题和东西,但没有任何效果。
问题是,我有一个 HTML 表单,当您单击提交时,它会将数据发布到 mysql 表中,它可以很好地提交数据,但是每次您按下提交时,它都会提交一组数据,其中所有字段都是空白的,除了customer 对应 $session_user_id 的字段。
我已经尝试过“if isset”,但它似乎对代码没有影响。这可能是我遗漏的一些小东西,但我没有收到任何错误。我的代码如下,数据库连接在另一个 .php 文件中并且工作正常。
<?php
if ( isset($session_user_id, $_POST['description'])){
$description = htmlentities(mysql_real_escape_string($_POST['description']));
mysql_query ("INSERT INTO `jobs` (customer, description)
VALUES ('".$session_user_id."', '".$description."')");
}
?>
还有我的html表单:
<form action="" method="POST">
<ul>
<li>
<label for="description">Description:</label>
<textarea name="description" rows=5 cols=30></textarea>
</li>
<li>
<input type="submit" value="Submit">
</li>
</ul>
</form>
非常感谢您的帮助。
【问题讨论】:
-
你不应该逃避进入数据库的数据。相反,您应该在将其输出到浏览器之前对其进行转义(当然假设它在 HTML 上下文中)。此外,如果您要将其转义到数据库中,您将以相反的顺序执行这些功能。逃逸(实体())不是实体(逃逸())。此外,您应该考虑切换到 PDO。 msyql 扩展是古老的,PHP 建议反对。无论如何,直截了当,您是否尝试过 var_dump'ing $_POST['description']?它是一个空字符串吗? isset 认为空字符串为真。