以下是开始对话的几种可能性:
初始化时撤消所有输入.
转义每个值,最好是在生成SQL时.
第一个解决方案是次优的,因为如果你想在除SQL以外的任何东西中使用它,你就需要对每个值进行转换,比如在网页上输出它.
第二种解决方案更有意义,但手动转义每个值是一种痛苦.
我知道准备好的陈述,但我发现MySQLi很麻烦.此外,将查询与输入分开关注我,因为尽管使订单更正是至关重要的,但是很容易犯错误,因此将错误的数据写入错误的字段.
准备好的陈述是最好的答案.你有测试,因为你可以犯错误!
看到这个问题.
正如@Rob Walker所述,参数化查询是您最好的选择.如果您正在使用最新最好的PHP,我强烈建议您查看PDO(PHP数据对象).这是一个本机数据库抽象库,它支持广泛的数据库(当然包括MySQL)以及带有命名参数的预处理语句.