Tablegateway "insert" 被执行但没有值被写入 table
Tablegateway "insert" gets executed but no values are written into table
环境:Docker 容器,其中 PHP 和 MySQL 运行 在单独的容器中
我有一个 table "persons" 并且想使用 TableGateway 插入值。代码被执行,我可以捕获最后插入的值。这是一个自动增量,每次在此 table 上执行的插入都会增加此值。
但是 table 中没有保存任何值(例如 phone)
public function __construct(
...
TableGateway $tablePersons,
...
) {
...
$this->tablePersons = $tablePersons;
...
}
...
$this->tablePersons->insert(['phone' => 123456]);
$id = $this->tablePersons->lastInsertValue;
我打印了 sql 字符串,看起来不错。
$sql = $this->tablePersons->getSql();
$insert = $sql->insert();
$insert->values(['phone' => 123456]);
print $sql->buildSqlString($insert);
// Result: INSERT INTO `persons` (`phone`) VALUES ('123456')
我在 phpmyadmin 上执行了这个查询,一切看起来都很好,值被存储了。
mysql_error.log 为空
mysql.log 显示如下:
2019-05-12T23:34:20.940510Z 34 Connect root@172.20.0.5 on app using TCP/IP
2019-05-12T23:34:20.940795Z 34 Query SET AUTOCOMMIT=0
2019-05-12T23:34:20.943878Z 34 Query INSERT INTO `persons` (`phone`) VALUES (42)
2019-05-12T23:34:20.944329Z 34 Quit
为了绕过 zend-framework,我转到 index.php 并执行了经典的 mysqli 查询:
$conn = new mysqli(## same values as in the zend-db adapter config ##);
$sql = "INSERT INTO persons (phone) VALUES (123456)";
$conn->query($sql);
这工作得很好 - 存储了一个新行。所以我认为,环境的问题可能会被排除。
我需要一个提示,一个想法,为什么当我 运行 使用框架函数查询时没有保存这些值。
尝试确认您启动了阻止 AUTO_COMMIT 插入值的数据库事务。此外,确认 phone 和其他字段的字段长度足以存储传递的值。
环境:Docker 容器,其中 PHP 和 MySQL 运行 在单独的容器中
我有一个 table "persons" 并且想使用 TableGateway 插入值。代码被执行,我可以捕获最后插入的值。这是一个自动增量,每次在此 table 上执行的插入都会增加此值。
但是 table 中没有保存任何值(例如 phone)
public function __construct(
...
TableGateway $tablePersons,
...
) {
...
$this->tablePersons = $tablePersons;
...
}
...
$this->tablePersons->insert(['phone' => 123456]);
$id = $this->tablePersons->lastInsertValue;
我打印了 sql 字符串,看起来不错。
$sql = $this->tablePersons->getSql();
$insert = $sql->insert();
$insert->values(['phone' => 123456]);
print $sql->buildSqlString($insert);
// Result: INSERT INTO `persons` (`phone`) VALUES ('123456')
我在 phpmyadmin 上执行了这个查询,一切看起来都很好,值被存储了。
mysql_error.log 为空 mysql.log 显示如下:
2019-05-12T23:34:20.940510Z 34 Connect root@172.20.0.5 on app using TCP/IP
2019-05-12T23:34:20.940795Z 34 Query SET AUTOCOMMIT=0
2019-05-12T23:34:20.943878Z 34 Query INSERT INTO `persons` (`phone`) VALUES (42)
2019-05-12T23:34:20.944329Z 34 Quit
为了绕过 zend-framework,我转到 index.php 并执行了经典的 mysqli 查询:
$conn = new mysqli(## same values as in the zend-db adapter config ##);
$sql = "INSERT INTO persons (phone) VALUES (123456)";
$conn->query($sql);
这工作得很好 - 存储了一个新行。所以我认为,环境的问题可能会被排除。
我需要一个提示,一个想法,为什么当我 运行 使用框架函数查询时没有保存这些值。
尝试确认您启动了阻止 AUTO_COMMIT 插入值的数据库事务。此外,确认 phone 和其他字段的字段长度足以存储传递的值。