我有一个非常特殊的情况,我必须使用 Post 方法通过 Form 传递单引号。我不是 100% 确定是什么导致引号在通过 POST 传输时不起作用,但我发现了一个非常丑陋的解决方案,所以我很好奇是否有人有更优雅的东西。这是我设法使用的:
str_replace("&", "", str_replace("#039;", "'", htmlspecialchars($_POST['Type_' . $i])));
我遇到这个难题的原因是因为我传递的 ENUM 查询看起来像这样:ENUM('DONE','NEW','PULLED'),并且它必须完全按照这种格式传递(所以没有斜线引号)。
我确实尝试过使用str_replace,强制使用utf-8,但其他方法都没有真正起作用。
@David 基本上它是一个表头编辑器。因此,例如,如果您希望将表列从 varchar 更改为 int,则将有一个表单可以从 DESCRIBE TABLE 队列中提取数据,而无需您知道列的名称。
唯一的问题是 ENUM 在编写 SQL 时需要引号。所以我放置了一个包含所有数据类型的下拉列表。通常这最终会是这样的:
更改表名称更改列 col_name col_name ENUM('op1', 'op2', 'op3') DEFAULT NULL;
这些单引号不能被转义,但是当 POST 到达执行阶段时,引号根本不允许进程继续进行。我知道还有其他方法可以做到这一点,但客户特别希望将其作为单个列表。