php 按ANSI_QUOTES模式插入

wrrgggsh  于 2023-03-28  发布在  PHP
关注(0)|答案(1)|浏览(82)

我在尝试执行INSERT时遇到了问题,它成功了,尽管它不应该成功。
我的表结构:

注:given1given2given3必填项
在我的应用程序中,我执行以下方法(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上。数据库以某种方式接受了插入,并没有发出错误消息,而是发出警告:

我想是需要修改Medoo的源代码或者向MySQL报告这个问题。我不知道该怎么办。
MySQL版本5.7.14
我使用MySQL Workbench 6.3.6

vuktfyat

vuktfyat1#

当mySQL Server设置为STRICT模式时,当您尝试插入不适合列的值时,它会产生错误。通过调用SET SQL_MODE=ANSI_QUOTES;,此严格模式很可能被禁用。
您可以尝试联系Medoo框架的作者,或者使用另一个框架或仅使用PDO来访问数据库。
有关详细信息,请参见mysql docs on server modes

相关问题