草庐IT

real-mode

全部标签

php - mysql_real_escape_string 的安全替代品? (PHP)

我将变量传递给执行查询的函数MySQL连接只发生在函数内部,并在函数内部关闭我希望能够在将字符串发送到函数之前安全地转义字符串我不能使用mysql_real_escape_string因为它需要一个MySQL连接(它只在函数内部建立)我知道简单的答案是在函数内部转义字符串,但我不能这样做,因为我需要发送字符串的一些转义部分和一些非转义部分例如,我需要像这样运行函数:myquery("'".escape_me("Mystring")."'");请注意,我发送了两个撇号--未转义,其中包含一个转义字符串。出于这个原因,我不能对myquery函数内的参数执行全面的mysql_real_esc

php - 使用 base64_encode 而不是 mysql_real_escape_string 安全吗?

我一直在使用base64_encode保留来自的html在数据库中形成和存储数据。经检索base64_decode使用并将数据放入文本区域。不使用mysql_real_escape_string()这样做安全吗??我用mysql_real_escape_string检索$_GET时模板参数id.templates.php?id=4然而,使用base64来保存html也会保留可能添加到文本区域中的任何恶意sql代码。到目前为止,我没有遇到任何问题。使用base64代替mysql_real_escape_string()是一种不好的做法吗??“错误的工作工具”?注意:我使用htmlspec

php - 我是否正确使用 mysqli_real_escape_string?

我正在使用mysqli_real_escape_string的OOP方法转义字符串。我将输入的内容保存到session变量中以确保它正确转义。它似乎正确转义,但是当我检查输入数据库的内容时,我没有看到单引号和双引号前的斜线。所以在浏览器中我回显:Array([formContent]=>I\'malwayshere!)但是在数据库中我看到:I'malwayshere!这是否意味着我的代码某处有问题? 最佳答案 不,这很正常。mysqli_real_escape_string自动为您转义单引号。当你有字符串时,I'malwaysher

mysql - 有没有更简单的方法来查找 MySQL 中某些值的 MODE(S)

MODE是数据中出现次数最多的值,可以有ONEMODE或MANYMODES这是两个表中的一些值(sqlFiddle)createtablet100(idintauto_incrementprimarykey,valueint);createtablet200(idintauto_incrementprimarykey,valueint);insertintot100(value)values(1),(2),(2),(2),(3),(3),(4);insertintot200(value)values(1),(2),(2),(2),(3),(3),(4),(4),(4);现在,为了获得以

mysql - 尽管 sql_mode 为空,但存储过程引发 "incompatible with sql_mode=only_full_group_by"

我有一个在MySQL5.6上运行良好的存储过程。在最近的服务器迁移过程中,我们升级到了MySQL5.7.19。我的存储过程现在抛出错误:SELECT列表的表达式#1不在GROUPBY子句中并且包含非聚合列“utility-monitor.daily_readings.building_id”,它在功能上不依赖于GROUPBY子句中的列;这与sql_mode=only_full_group_by不兼容:CALLmonthly_readings(2017,1,NULL,1,1))我已经通过/var/mysql/my.cnf文件将sql_mode设置为"",重新启动了mysql服务并通过控制

MySQL/ColdFusion 8 : sql-mode

我们一直在用ColdFusion和MySQL做一些测试,但有点困惑。我们知道,您可以在/etc/my.cnf文件中设置不同的“sql-mode”标志,这将导致MySQL以特定方式运行,具体取决于定义的模式。我们知道您也可以在使用“--sql-mode=”标志启动MySQL时设置这些标志。在/etc/my.cnf中,我们看到没有定义任何模式(一个被注释掉了)所以我们添加了'sql-nodes=""'并重新启动了mysql(/etc/init.d/mysqldrestart).每当我们转到MySQL命令行查看设置的模式时,输出如下:mysql>SELECT@@GLOBAL.sql_mode

MySQL:防止竞争条件 - FOR UPDATE 或 LOCK IN SHARE MODE?

这是我想要的交易顺序:User1选择字段,执行操作,更新为新值。User2选择字段,执行操作,更新为新值。User3选择字段,执行操作,更新为新值。来selfunderstand第一个select只执行写锁,而第二个select执行读写锁。两者似乎都可用,但在第一种情况下,User2将读取什么值?User1更新前的初始值,还是User1更新后的值(这是我想要的)?所以我很困惑,我应该使用SELECT...FORUPDATE还是SELECT...LOCKINSHAREMODE? 最佳答案 您可能想使用FORUPDATE。使用“锁定共享

php - php 的 mysql_real_escape_string() 的等效 javascript 代码是什么?

mysql_real_escape_string()的等效javascript代码是什么? 最佳答案 基于PHPdocumentation方法的这将做大致相同的事情。然而,PHP中的mysql_real_escape_string方法已被弃用。functionmysqlEscape(stringToEscape){returnstringToEscape.replace("\\","\\\\").replace("\'","\\\'").replace("\"","\\\"").replace("\n","\\\n").replac

php - mysql_real_escape_string 不转义"

在PHP中,我在使用mysql_real_escape_string插入MySQL数据库之前转义字符$array_to_insert=array_map('mysql_real_escape_string',$my_arr);$mysql->setTbl("mytable");$id=$mysql->insertArray($array_to_insert);保存时,双引号被保存为转义\.我不想要这个,因为一些数据是HTML,它可能包含像这样的标签。等,将被保存为然后在WordPress设置中显示不正确。我在stackoverflow的其他地方读到,为了避免转义双引号,必须先插入(如上

mysqldump 返回未知变量 sql-mode 错误

当我像这样运行mysqldump时出现此错误:$mysqldump-umy_user-pXXX-h127.0.0.1--databasesmy_db>db_backup.sqlmysqldump:unknownvariable'sql-mode=STRICT_ALL_TABLES'有人知道会发生什么吗?当我尝试启动MySQL客户端时,我也得到了同样的结果。 最佳答案 原来我的my.cnf文件的客户端设置部分有“sql-mode=STRICT_ALL_TABLES”。我把它移到了服务器部分,看起来一切都很好。