Среда: Docker-контейнер, в котором PHP и MySQL работают в отдельных контейнерах
У меня есть таблица "people" и я хочу вставить значения с помощью 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);
Это прекрасно работает - новая строка сохраняется.Поэтому я думаю, что проблема с окружающей средой может быть исключена.
Мне нужна подсказка, идея, почему значения не сохраняются, когда я запускаю запрос с функциями платформы.