Для извлечения вы можете использовать методы класса Zend_Db_Select для подготовки запроса и его выполнения, передавая переменные в местах вопросительных знаков (заполнители, которые будут экранированы от специальных символов) после запятой (возможно несколько вопросительных знаков, передавая переменные слева направо):
public function getRowByID($id) {
$table = $this->getTable();
$select = $table->select();
$select->where('id = ?', $id);
$row = $table->fetchRow($select);
if (!$row) {
return false;
}
return $row;
}
Для вашего второго метода getByProjectId () это зависит от того, используете ли вы подходящую модель (например, Auth_Model_Auth) или хотите получить доступ к данным из другой таблицы
public function getbyProjectID($projectid) {
$table = $this->getTable();
$select = $table->select();
$select->where('projectid = ?', $projectid);
$result = $table->fetchAll($select);
return $result;
}
И для обновления вы можетепередать массив в метод 'update' в том же стиле, что и для извлечения данных. Ключ массива должен быть именем столбца вашей таблицы.
public function updateRowByUserProject($username, $projectid) {
$table = $this->getTable();
// Data you want to insert/update
$data = [
'iscurrent' => 0
];
// Where you want to update it
$where = [
'username = ?' => $username
]
$result = $table->update($data, $where);
$data1 = [
'iscurrent' => 1
]
$where1 = [
'username = ?' => $username,
'projectid = ?' => $projectid
]
$result1 = $table->update($data1, $where1);
}
РЕДАКТИРОВАТЬ:
Для обоих вопросов из комментариев вы можете достичь этого с помощью метода quoteInto, который также экранирует данные из специальныхchars.
В первом случае вы подготавливаете переменную $ where, которая содержит записи, которые вы хотите удалить:
$table = $this->getTable();
$where = $table->getAdapter()->quoteInto('projectid = ?', $projectid);
$isDeleted = $table->delete($where);
Во втором случае вы можете сделать то же самое:
$query = "SELECT COUNT(*) AS total FROM applications WHERE projectid IN (SELECT projectid FROM auth WHERE projectid = ?)";
$query = $this->getAdapter()->quoteInto(?, $projectid):
...
Но вам следует избегать написания больших запросов в одной переменной и последующего их выполнения. Я бы посоветовал вам ознакомиться с этим: https://framework.zend.com/manual/1.11/en/zend.db.select.html
Действительно хорошо объяснено, как использовать методы Zend для этой цели.