[英]Move mysql data from one table to another with escaped values
我将数据从1个表移到另一个表,并且它与可能包含一些单引号和双引号的自由文本字段分开工作。
我只包含了麻烦的值,这些值是从上一页的表单中传递的,然后使用以下方法检索:
$Con_Details = mysqli_real_escape_string($con, $_POST['Con_Details']);
$Res_Response = mysqli_real_escape_string($con, $_POST['Res_Response']);
数据像这样进入第一个表。
$sql="INSERT INTO t_table
(Con_Details,Res_Response) VALUES ('$Con_Details','$Res_Response')";
if (!mysqli_query($con,$sql)) {die('Error: ' . mysqli_error($con));
}
稍后,我将显示表中的行,并在选择了某行后,通过下一页再次使用以下命令检索所有值:
$Con_Details = mysqli_real_escape_string($con, $_POST['Con_Details']);
$Res_Response = mysqli_real_escape_string($con, $_POST['Res_Response']);
它们显示在这样的表中:
<table>
<tr><td colspan="5"> </td></tr>
<tr>
<td width="200" align="right" valign="top">Concern Details:<br> (Max 500)</td>
<td colspan="3" bgcolor="#ffffff"><?php echo "$Con_Details"; ?></td>
<td></td>
</tr>
<tr>
<tr><td colspan="5"> </td></tr>
<td width="200" align="right" valign="top">Response Details:<br> (Max 500)</td>
<td colspan="3" bgcolor="#ffffff"><?php echo "$Res_Response"; ?></td>
<td></td>
</tr>
</table>
其中一个值显示像这样的“不显示全文”,而另一个显示像这样的“不显示全文”
我想将行移动到新表中,但是它会截断该字段,并且仅显示“ Don \\”或“ Don \\”
我如何执行此操作,因为两个表都不相同,它们都有一个自动增量ID,但是表2上还有一个名为“ id_orig”的列,用于存储表1中的ID。
谢谢
PHP,在PHP中,您需要对不同的目标使用不同的转义机制。
mysqli_real_escape_string()
仅用于在mysqli_*
API中构建MySQL语句。
urldecode()
用于构建网址。
htmlentities()
用于在构建HTML页面时转义&
, <
和其他内容。
您第一次使用mysqli_real_escape_string()
是正确的; 第二个应该使用htmlentities()
代替。
其他注意事项...
从MySQL读取数据时(例如,使用SELECT
),您无需取消转义返回的字符串。
PHP的“魔术引号” (取决于您的设置)可能在您看到$_GET
和$_POST
以及$_REQUEST
值之前就弄乱了。 如果是这样, 则您需要进行某种类型的转义。 (详细信息取决于您使用的设置。)可能要变形的字符包括"&<>'\\
。建议将它们放入form
,然后执行echo strlen()
以查看它是否为6个字符或添加了一些转义字符。 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.