自动插入空格?

时间:2015-07-20 21:01:30

标签: php sql ajax

我有一个侧面项目,我正在研究学习php和sql,混合了一些ajax。我有以下代码(示例)将特定数据插入数据库:

index.php -

<textarea class="form-control txt" rows='3' name="data[Address]" id="Address" placeholder="Your Address">
                        <?php echo isset($results['data']['Address']) ? str_replace("<br />","\n", $results['data']['Address']): ''; ?></textarea>

functions.php -

$data['data']['Address'] = str_replace("\n","<br />", $data['data']['Address']);

sql data -

if($id!=NULL && !empty($id)){
$query = "UPDATE test SET address = '$data' WHERE id = $id";}

这是我的问题。数据可以很好地存储到数据库中,我可以从index.php中读取它,但是当我去重新保存它时,它会在地址字段之前添加空格(3个选项卡值),这样当我去读取数据时再次通过index.php,它没有显示。

如何才能保存空格,或删除不需要的空格?

1 个答案:

答案 0 :(得分:1)

看起来您将Textarea中的内容存储为数据库中的HTML。您应该始终将$ _POST中的“真实数据”存储到数据库中。 (因此换行符会在数据库中保留换行符)。转义将在您使用htmlspecialchars()或htmlentities()将数据发送到浏览器之前发生。

针对您的具体问题,请尝试以下操作:将您的POST表单数据直接输出到您的textarea:

<form action="#" method="POST">
    <textarea name="input"><?= htmlspecialchars ($_POST["input"]); ?></textarea>
    <button name="submit1" type="submit">Send it</button>
</form>

您输入的数据应该在您输入时显示。所以使用htmlspecialchars()而不是随机trim()'ing或nl2br()'。

此外:构建SQL查询时要小心。在将每个用户可编辑变量添加到语句之前,请确保正确转义它们。请参阅:http://php.net/manual/en/mysqli.real-escape-string.php

这样做:

mysql_query ("INSERT INTO xyz ('val') VALUE ('" . mysql_real_escape_string($_POST["input"]). "')");

或 - 甚至更好:让自己熟悉一些现代且更安全的数据库访问方式 - 比如使用PDO(http://php.net/manual/en/book.pdo.php