我正在从表中读取值并以可由用户更新的形式显示它们。问题是每次我进行更新时都会在表中的每个值中添加一堆空格。
以下是基本代码:
function ReadHTML($str) {
return htmlspecialchars(stripslashes($str), ENT_QUOTES);
}
$query = "SELECT * FROM " . $table_name . " WHERE id = " . $row_id;
$result = mysqli_query ($connection, $query ) or die ("Database query failed: " . mysqli_error($connection));
$row = mysqli_fetch_assoc($result);
$q1 = ReadHTML($row['q1']);
当我在表单中显示值时,它看起来很好。但是当我更新空间被添加的值时。
当我处理更新时,它看起来像这样:
function mysqli_prep(&$connection, $value) {
$detagged = strip_tags($value);
$escaped = mysqli_real_escape_string($connection, $detagged);
return $escaped;
}
$q1 = mysqli_prep($connection, $_POST['q1'])
$query = "UPDATE my_form SET
q1='$q1'";
谁能看到我做错了什么?
HTML看起来像这样:
<textarea class="textarea form_textarea_field" name="comment_1" placeholder="Comments">
<?php if($saved_form == true) {echo $q1;} ?>
</textarea>
当我在浏览器中查看DOM时,它看起来像这样:
<textarea class="textarea form_textarea_field" name="comment_1" placeholder="Comments">
" Test text "
</textarea>
但我从未添加过这些引号或空格,并且它们没有出现在显示屏中。不确定这是正常还是线索是什么问题。
答案 0 :(得分:3)
如果您不想添加任何空格,则应在构建html时确保textarea中没有空格。
所以改变:
<textarea class="textarea form_textarea_field" type="textarea" name="comment_1" placeholder="Comments">
<?php if($saved_form == true) {echo $q1;} ?>
</textarea>
为:
<textarea class="textarea form_textarea_field" type="textarea" name="comment_1" placeholder="Comments"><?php if($saved_form == true) {echo $q1;} ?></textarea>
请注意textarea
的开始标记和结束标记之间的所有内容都是其内容的一部分(包括换行符,空格等)。