gpt4 book ai didi

php - 当第一个表中存在特殊字符时,MySQL SELECT 然后保存或更新到不同的表。 left_my_text_alone();

转载 作者:行者123 更新时间:2023-11-29 09:28:38 29 4
gpt4 key购买 nike

我已将文本正确保存到 mariahDB 10.2 数据库中。让事情变得复杂的是,该文本实际上是正则表达式和其他人发明的混合代码的组合。它可以在另一个应用程序中作为文本文件(而不是 PHP)不加修改地使用。但它只是在一天结束时发短信。我想从该表中获取数据,对其进行少量更改,然后将其保存在新表中。

问题不在于对原始数据进行太多更改,而在于选择并将充满反斜杠、单引号和双引号的数据保存到新表中,而在保存时不进行更改。 PHP 和 MySQL 中是否有一种简单的方法可以从表中获取文本并按原样重新保存,以便第二个表与第一个表没有不同?

例如,第一个表包含以下内容。

将列表添加到列表(%section,$plugin function("XpathPlugin.dll", "$Generic Xpath Parser", $document text, "//p[1]/a[@class=\'结果标题 hdrlnk\' 和 1]", "outerhtml", "False"),"不要删除","全局")

但是如果我将其放入一个变量中,然后将其插入或更新到另一个表中,MySQL 似乎会删除反斜杠,或者添加反斜杠并针对格式不正确的 SQL 抛出错误。

例如,Don\'t Delete 变为 Don't Delete,在其他示例中,\\ 变为 \

在另一种情况下,?=\")" 丢失反斜杠并变为 ?=")"

我尝试了数十种 PHP 函数的组合来保留文本,例如 addslashes()、htmlentities()、preg_replace()、各种字符串替换,但没有任何方法可以将数据以与来时相同的方式返回到表中出去。

有人有办法做到这一点吗?我会调用函数leave_my_text_alone(); !!

编辑

要添加一些无法获得变量的东西,我可以将其更新到我尝试过的数据库中

$omnibotScript = addcslashes($omnibotScript,"'");

然后我发现我需要执行两次此操作,以考虑从 Don't Delete 中的撇号之前删除反斜杠......否则会引发 MySQL 解析错误。再次执行此操作修复了该问题。因此,我必须放回两个反斜杠才能删除一个。然后我添加了这个以考虑将双反斜杠减少为单反斜杠。

$pattern = '/\\\\"/';
$replacement = '\\\\\\\"';
$omnibotScript = preg_replace($pattern, $replacement, $omnibotScript);

但这样的例子还在继续。

最佳答案

使用准备好的语句。

如果您使用准备好的语句,MySQL 将处理您所需的所有转义,以便将字符串准确地返回到表中,就像它从表中出来一样。例如,使用MySQLi:

$query = "SELECT s1 FROM t1";
if (!$result = $con->query($query)) {
exit($con->error);
}
$row = $result->fetch_assoc();
$value = $row['s1'];

$query = "INSERT INTO t2(s1) VALUES (?)";
$stmt = $con->prepare($query);
$stmt->bind_param('s', $value);
$stmt->execute();

t2 中的 s1 值将与 t1 中的值完全相同。

关于php - 当第一个表中存在特殊字符时,MySQL SELECT 然后保存或更新到不同的表。 left_my_text_alone();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59167369/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com