gpt4 book ai didi

php - 使用模仿原始 mysql_real_escape_string 的函数

转载 作者:行者123 更新时间:2023-11-29 02:39:01 26 4
gpt4 key购买 nike

我尝试从一张表中提取一些信息并将其插入到另一张表中。我正在使用 https://php.net/mysql_real_escape_string 中的以下函数处理转义字符。

<?php 
function mysql_escape_mimic($inp) {
if(is_array($inp))
return array_map(__METHOD__, $inp);

if(!empty($inp) && is_string($inp)) {
return str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"), array('\\\\', '\\0', '\\n', '\\r', "\\'", '\\"', '\\Z'), $inp);
}

return $inp;
}
?>

我处理的字符串是带有双引号和单引号的html形式

<input type="radio" value="choice_3" checked="true"/> Eat pig's belly and swine's matrix

我必须使用字符串连接来编写查询,因为列名和表名是动态的。

$query .= "'".mysql_escape_mimic($string)."', ";

我知道有某种语法错误,但我不知道如何修复它。任何人都可以帮我吗?谢谢。

最佳答案

我怀疑你的问题出在这一行:

$query .= "'".mysql_escape_mimic($string)."', ";

该连接将留下一个尾随逗号,这几乎肯定会导致您的 SQL 中出现语法错误。在 SQL 中,任何要用逗号分隔的术语集都必须在该组末尾有尾随逗号。

在完成连接字符串的构建后,您可以使用 PHP 修剪函数修剪尾随的“,”。


我还想指出,您可以完全在数据库中完成您声明的目标(“从一个表中提取一些信息并将其插入到另一个表中”)。也就是说,您不需要将其 SELECT 到您的应用程序中,然后重新 INSERT 到另一个表中,从而完全避免了这个问题。

如果两个表有相同的列,那么像这样的东西应该可以工作:

INSERT INTO table2 SELECT * FROM table1 WHERE condition;

如果两个表没有相同的列,那么像这样的东西应该可以工作:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT columnA, columnB, columnC, ...
FROM table1
WHERE condition;

我直接从 w3schools.com 抄袭了这些.您可以使用搜索字符串“mysql select from one table into another”搜索许多此类示例。

关于php - 使用模仿原始 mysql_real_escape_string 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56862695/

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