繁体   English   中英

使用转义值将mysql数据从一个表移动到另一个表

[英]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">&nbsp;</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">&nbsp;</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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM