Php 只有textarea的第一个字母进入数据库

Php 只有textarea的第一个字母进入数据库,php,html,mysql,Php,Html,Mysql,感谢过去几个月里给我这么好建议的每个人。我几乎完成了这个项目,我学到了很多。但我在使用textarea时有点不知所措。我搜索了又搜索,找不到解决办法 这不是一个面向公众的网站,所以我不担心sql注入,我的组织使用的是较旧版本的PHP,所以我必须使用mysql\u query而不是mysqli\u query 我的问题是,我必须将数据库中的两个内容回显到表单中,以便用户可以编辑数据库,然后使用新的输入更新数据库。一个是我使用input=text显示的一小串文本。但是另一个是一个较长的字符串,它列出

感谢过去几个月里给我这么好建议的每个人。我几乎完成了这个项目,我学到了很多。但我在使用textarea时有点不知所措。我搜索了又搜索,找不到解决办法

这不是一个面向公众的网站,所以我不担心sql注入,我的组织使用的是较旧版本的PHP,所以我必须使用mysql\u query而不是mysqli\u query

我的问题是,我必须将数据库中的两个内容回显到表单中,以便用户可以编辑数据库,然后使用新的输入更新数据库。一个是我使用input=text显示的一小串文本。但是另一个是一个较长的字符串,它列出了一组指令,所以我使用它,因为它对于文本框来说太多了。但是,当我运行更新查询时,只有textarea字符串的第一个字母被更新到我的数据库中。文本框字符串工作正常。这是我的密码

getrcs.php

<html>
<form>
<body>


<?php
$q = intval($_GET['q']);
include ('database_connect.php');
$sql= "SELECT * FROM RDS_REFERENCE WHERE ID = '".$q."'";
$query_result=mysql_query($sql);
?>

<table>
<tbody>

<?php
while($row = mysql_fetch_array($query_result)) {
?>

<tr>
<td>
<label>Sub File Series Number/Title</label>
<input type="text" style="width:250px;" required="Required" name="sub_fs_num_tle1[]" value="<?php echo $row['SUB_FS_NUM_TITLE']?>/>
</td>




<td>
<label>Disposition Instructions</label>
<textarea name="disp_instr1" cols="40" rows="30" style="font-family: Arial, Helvetica  sans-serif; font-size: 12px;"><?php echo $row['Disposition_Instructions'] ?></textarea>
</td>
</tr>

<?php
}
?>

</tbody>
</form>
</body>
</html>
并更新_rcs.php

<?php

include('database_connect.php');

foreach($_POST['id'] as $row => $id)


{
$sub_fs_num_tle1 = $_POST['sub_fs_num_tle1][$row];
$disp_instr1 = $_POST['disp_instr1'][$row];


$rcs_reference_update1 = "UPDATE RDS REFERENCE SET
                            SUB_FS_NUM_TITLE = '$sub_fs_num_tle1',
                            Disposition_Instructions = '$disp_instr1'
                            ";

mysql_query($rcs_reference_update1) or die("Could not update".mysql_error());

}

header('Location:rcs_maint.php');

?>
由于您的输入是name=disp\u instr1,因此$\u POST['disp\u instr1']是一个字符串,而不是数组。这意味着$_POST['disp_instr1'][$row]将输出该字符串中的任何字符$row

简单演示:

产出:

t

现场演示:

要解决此问题,请使用:

$disp_instr1 = $_POST['disp_instr1'];

此外,SQL注入并不是使用参数化查询的唯一原因。如果一个报价单需要转到数据库,它将按原样失败。

此处缺少一个报价单:intval$\u GET['q];停止使用已弃用且自PHP7起已删除的mysql_*函数。迁移到PDO并开始使用准备好的语句。您不应该在字符串中使用不带双引号的双引号:WHERE ID='.$q.'for循环使用$_POST['ID']-我在您的表单中看不到任何名为idy的输入您到处都有输入错误/错误,所以我假设这不是您的实际代码$_POST['sub_fs_num_tle1]更新RDS参考。问题列的字段类型和长度是多少?
$disp_instr1 = $_POST['disp_instr1'];