今天遇到疾行客同学提出的medoo insert方法不能插入数据库问题,我测试了一下 发现是可以的

而INSERT INTO "t_user" (username) VALUES ('test'); 这条语句总是无法执行,而medoo总是会帮你把数据库的表加上双引号 但是在命令行中无法执行。后来我搞不懂为啥medoo可以执行,发现了一个问题

SET SQL_MODE=ANSI_QUOTES 在起作用

我们整体是用insert方法插入 而这个方法在833行

$this->exec('INSERT INTO ' . $this->table_quote($table) . ' (' . implode(', ', $columns) . ') VALUES (' . implode($values, ', ') . ')');

方法调用exec方法执行sql,而exec方法在 183行核心代码是

$this->pdo->exec($query);

核心是靠$this->pdo来完成,那么这个东西如何定义的呢

在137行定义赋值

medoo数据库插入的问题-LMLPHP

而commands变量是需要执行的,起源于

medoo数据库插入的问题-LMLPHP

这样就给链接设定了SQL_MODE

命令行演示效果如下

medoo数据库插入的问题-LMLPHP

04-14 20:28