按ANSI_QUOTES模式

时间:2017-11-23 15:46:35

标签: php mysql sql-insert ansi medoo

我在尝试INSERT时遇到问题,即使不应该这样做也会成功。

我的表结构: table structure

注意: given1 given2 given3 必填字段

在我的应用程序中,我执行以下方法(https://github.com/catfan/Medoo):

$this->medoo->insert('teste', ['dado2' => 11, 'dado3' => 'teste']);

这不应该被接受,因为data2的类型为SET,而data3的类型为INTEGER`。即便如此,插入成功。此外,data1 不会作为参数传递,即使它是必填字段。

我检查了MySQL日志并获得了以下条目:

SET SQL_MODE=ANSI_QUOTES;
INSERT INTO "teste" ("dado2", "dado3") VALUES ('11', 'teste');

在数据库中手动运行此SQL,我发现问题在于使用ANSI_QUOTES。数据库以某种方式接受插入,而不是发出错误消息,它会发出警告:
print screen of the return message

我认为需要修改Medoo源代码或将此问题报告给MySQL。我不知道该怎么做。

MySQL版本是5.7.14
我使用MySQL Workbench 6.3.6

1 个答案:

答案 0 :(得分:0)

当mySQL服务器设置为STRICT模式时,当您尝试插入不适合列的值时,会产生错误。通过调用SET SQL_MODE=ANSI_QUOTES;,这种严格模式很可能被禁用。

您可以尝试联系Medoo框架的作者,或者使用其他框架或PDO来访问您的数据库。

有关详细信息,请参阅mysql docs on server modes