Php 按ANSI_引号模式插入
我在尝试执行Php 按ANSI_引号模式插入,php,mysql,sql-insert,ansi,medoo,Php,Mysql,Sql Insert,Ansi,Medoo,我在尝试执行插入时遇到问题,它成功了,尽管它不应该成功 我的表格结构: 注:given1、given2和given3是必填字段 在我的应用程序中,我执行以下方法(): 这不应被接受,因为数据2的类型为SET,而数据3的类型为INTEGER`。即便如此,插入还是成功了。此外,数据1不会作为参数传递,即使它是必填字段 我检查了MySQL日志,得到以下条目: SET SQL_MODE=ANSI_QUOTES; INSERT INTO "teste" ("dado2", "dado3") VALUES
插入时遇到问题,它成功了,尽管它不应该成功
我的表格结构:
注:given1、given2和given3是必填字段
在我的应用程序中,我执行以下方法():
这不应被接受,因为数据2的类型为SET
,而数据3的类型为INTEGER`。即便如此,插入还是成功了。此外,数据1不会作为参数传递,即使它是必填字段
我检查了MySQL日志,得到以下条目:
SET SQL_MODE=ANSI_QUOTES;
INSERT INTO "teste" ("dado2", "dado3") VALUES ('11', 'teste');
在数据库中手动运行此SQL时,我发现问题在于使用ANSI\u QUOTES
。数据库以某种方式接受insert,而不是发出错误消息,而是发出警告:
我认为需要修改Medoo源代码或将此问题报告给MySQL。我不知道该怎么办
MySQL版本是5.7.14
我使用MySQL Workbench 6.3.6当MySQL服务器设置为严格
模式时,当您尝试插入不适合列的值时,它会产生错误。通过调用SET SQL\u MODE=ANSI\u QUOTES代码>此严格模式很可能已禁用
您可以尝试联系Medoo framework的作者,或者使用另一个framework,或者只使用PDO
访问您的数据库
有关更多信息,请参阅。完美的朋友!!!谢谢你的信息。我通过在Medoo.php的第121行($commands[]='setsql\u MODE=ANSI\u QUOTES')上注释并将ANSI\u QUOTES模式直接添加到MySQL配置中,解决了这个问题。Medoo的问题是,它不应该删除所有模式,只留下ANSI_引号,应该保留其他模式并添加ANSI_引号。
SET SQL_MODE=ANSI_QUOTES;
INSERT INTO "teste" ("dado2", "dado3") VALUES ('11', 'teste');