我将从标准表单posts (到PHP PDO)转移到异步XHR posts来更新mysql数据库(同样是PHP PDO),使用已准备好的语句调用mysql存储过程。
使用HTMLSpecialCharacters / UTF-8等来清理输入(包括XHR版本和form post版本)。同时在我的PDO连接字符串中设置charset=utf8。
问题是,如果我向XHR版本传递一个包含"#“的字符串,更新将失败。返回的错误SQLSTATE23000表明完全独立的列不能为null (根据表约束)。
有几个字段正在输入,无论哪个字段包含"#",都会违反相同的null约束。
请注意,设置为null的字段是使用$stmt->bindvalue设置的最后一个字段。
此外,我在绑定值中使用了$_GET[],而不是$_POST,这是一个类似问题中的问题。
我知道我可以替换write上的"#“并将它放回read (我已经在用换行符来做这件事了),但我怀疑我在这里遗漏了一些基本的东西(我对AJAX和PHP有点陌生)。
在标准表单post中没有"#“(或换行符)的问题。
TIA用于任何指针
发布于 2019-10-30 12:20:28
耶..。我想通了,或者说老实说,我放弃了,尝试了一种不同的方法。我没有使用application/x-www-form-urlencoded的content-type将值作为url的一部分发布,而是使用content-type = application/json将数据发布为json。
不仅问题消失了,而且我也不再需要寻找和替换换行符和#s。
json方法似乎是最符合逻辑的,也是最不痛苦的。
https://stackoverflow.com/questions/58617440
复制相似问题