【发布时间】:2019-05-12 23:42:41
【问题描述】:
环境:Docker 容器,PHP 和 MySQL 在单独的容器中运行
我有一个“persons”表,想使用 TableGateway 插入值。代码被执行,我可以捕获最后插入的值。这是一个自动增量,在此表上执行的每次插入都会增加此值。
但表中没有保存任何值(例如电话)
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);
这工作得很好 - 一个新的行被存储。所以我认为,可能会排除环境问题。
我需要一个提示,了解当我使用框架函数运行查询时为什么没有保存这些值。
【问题讨论】:
标签: zend-db