如何在 Zend Framework 2 中执行之前打印精确的 sql 查询
How to print exact sql query before execute in Zend Framework 2
我正在使用 Zend 框架 2 开发一个应用程序。我正在使用 TableGateway select、插入、更新和删除查询。
1.我的问题是如何在执行 INSERT、UPDATE 和 DELETE 语句之前打印精确的 sql 查询? 对于 SELECT 语句这是我的代码为我工作。
$selectedTable = new TableGateway($this->tblName, $this->dbAdapter);
$sql = $selectedTable->getSql();
$select = $sql->select();
if ($trace) {
echo "<br>" . $sql->getSqlstringForSqlObject($select) . "<br>";
exit;
}
else {
$resultSet = $selectedTable->selectWith($select);
unset($selectedTable);
return $resultSet;
}
2. 对于最后插入的 ID,我正在使用此代码并且工作正常。
$selectedTable = new TableGateway($this->tblName, $this->dbAdapter);
$selectedTable->insert($dataArray);
$insertId = $selectedTable->adapter->getDriver()->getConnection()->getLastGeneratedValue();
unset($selectedTable);
return $insertId;
但是对于 UPDATE 如何获取最后更新的 ID?对于 DELETE 如何获得受影响的行?因为对于 UPDATE 和 DELETE 此代码不起作用。
任何人都可以建议如何完成这些工作吗?
1. 应该没有区别也没有困难,在你的$insert
对象上以同样的方式做。这里我如何执行 Sql 插入并获取 SQL 字符串:
$sql = new Sql($this->dbAdapter);
$insert = $sql->insert('table');
[...]
$sqlString = $insert->getSqlString($this->dbAdapter->getPlatform());
2. 当你插入一个值时,你不知道插入前生成的值id
是什么,只有插入后才知道。这就是为什么有用于插入值的 getLastGeneratedValue-)
方法的原因。
但是当你更新或删除一个值时,它的id
已经定义好了,你可以读取它。所以你所要做的就是从你的数据库中读取它。在更新或删除您的对象之前执行 select,您将知道您想要的所有 ID。
我正在使用 Zend 框架 2 开发一个应用程序。我正在使用 TableGateway select、插入、更新和删除查询。
1.我的问题是如何在执行 INSERT、UPDATE 和 DELETE 语句之前打印精确的 sql 查询? 对于 SELECT 语句这是我的代码为我工作。
$selectedTable = new TableGateway($this->tblName, $this->dbAdapter);
$sql = $selectedTable->getSql();
$select = $sql->select();
if ($trace) {
echo "<br>" . $sql->getSqlstringForSqlObject($select) . "<br>";
exit;
}
else {
$resultSet = $selectedTable->selectWith($select);
unset($selectedTable);
return $resultSet;
}
2. 对于最后插入的 ID,我正在使用此代码并且工作正常。
$selectedTable = new TableGateway($this->tblName, $this->dbAdapter);
$selectedTable->insert($dataArray);
$insertId = $selectedTable->adapter->getDriver()->getConnection()->getLastGeneratedValue();
unset($selectedTable);
return $insertId;
但是对于 UPDATE 如何获取最后更新的 ID?对于 DELETE 如何获得受影响的行?因为对于 UPDATE 和 DELETE 此代码不起作用。
任何人都可以建议如何完成这些工作吗?
1. 应该没有区别也没有困难,在你的$insert
对象上以同样的方式做。这里我如何执行 Sql 插入并获取 SQL 字符串:
$sql = new Sql($this->dbAdapter);
$insert = $sql->insert('table');
[...]
$sqlString = $insert->getSqlString($this->dbAdapter->getPlatform());
2. 当你插入一个值时,你不知道插入前生成的值id
是什么,只有插入后才知道。这就是为什么有用于插入值的 getLastGeneratedValue-)
方法的原因。
但是当你更新或删除一个值时,它的id
已经定义好了,你可以读取它。所以你所要做的就是从你的数据库中读取它。在更新或删除您的对象之前执行 select,您将知道您想要的所有 ID。