gpt4 book ai didi

PHP 函数转 MySQL 函数

转载 作者:行者123 更新时间:2023-11-29 08:39:56 27 4
gpt4 key购买 nike

有人可以指导我如何将此函数重写为 MySQL 函数,以便能够直接在 MySQL 上进行此解码吗?

const CHAR_MAP = 'abcdefghijklmnopqrstuvwxz0123456789';

function decode($encoded) {
$elen = strlen($encoded);
$cmlen = strlen(Mobile::CHAR_MAP);
$offset = strpos(Mobile::CHAR_MAP, substr($encoded, 0, 1), 1);

$decoded = '';
$check = 0;
for ($i=1;$i<$elen-1;$i++) {
$a = strpos(Mobile::CHAR_MAP, substr($encoded, $i, 1), 1);
$x = $a - $offset * $i;

$x %= $cmlen;

if ($x < 0) {
$x = $cmlen + $x;
}

$decoded .= $x;

$check += $x;

}


return $decoded;

}

最佳答案

好吧,根据我的更好判断,我已经为您编写了一个快速 SQL 函数。

我应该指出,SO 并不是一个人们为您编写完整答案的网站,而是您学习如何为自己编写答案的网站。然而在这种情况下,如果不给出答案,我就无法知道如何进行教学,所以就是这样。

但请注意:我根本没有测试过这个。。我直接将其输入到 SO 答案框中,它离实际的 mySQL 服务器还很远。如果它不起作用(很有可能),请在寻求任何进一步的帮助之前尝试自行修复它(并将其视为帮助您了解其工作原理的答案的一部分)。

另请注意,我假设我在评论中对您的原始 PHP 函数有错误的猜测是准确的。这个SQL函数对字符串进行字符移位操作;它不会输出一串无用的数字。

delimiter ||
DROP FUNCTION IF EXISTS mydecode||
CREATE FUNCTION mydecode( x longtext) RETURNS longtext
LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA
BEGIN
DECLARE len INT UNSIGNED;
DECLARE cpos INT UNSIGNED;
DECLARE output LONGTEXT;
DECLARE charmap LONGTEXT;
DECLARE cshift VARCHAR(1);
DECLARE thischar VARCHAR(1);
DECLARE thischarpos INT UNSIGNED;

SET charmap = 'abcdefghijklmnopqrstuvwxz0123456789abcdefghijklmnopqrstuvwxz0123456789';
SET len = LENGTH(x);
SET cpos = 1;
SET cshift = POSITION(SUBSTRING(x,len,1) IN charmap);

REPEAT
SET thischar = SUBSTRING(x,cpos,1);
SET thischarpos = POSITION(thischar IN charmap) + 35;
SET output = CONCAT_WS(output,SUBSTRING(charmap,thischarpos-cshift,1));
SET cpos = cpos + 1;
UNTIL cpos >= len END REPEAT;
return output;
END;
||

我会重申我在评论中提出的关于这是一个微不足道的操作的另一点。像这样简单的字符转换操作实际上毫无用处。我想不出任何场景它们是个好主意。尤其是安全性。

如果这个“编码器”被用于任何您认为安全的一部分,那么您就会遇到一个非常严重的问题。

关于PHP 函数转 MySQL 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14121313/

27 4 0
文章推荐: php - UNION 查询的问题
文章推荐: php - MySQL插入查询一次插入多条记录
文章推荐: mysql - 替换 120 多个表中的 MySQL 值
文章推荐: php - 将数据从 MySQL 输出到多行 HTML,在 textarea 中有效,但在
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com