Я пытаюсь проверить правильность обработки запроса select. С транзакцией DB мы можем проверить INSERT, UPDATE, DELETE
как показано ниже в Codeigniter
$this->db->trans_begin();
//query
if($this->db->trans_status() == false){
return ['error' => 1, 'message' => 'Error massage'];
}
но он не работает с запросом SELECT. Есть ли другие способы проверить это.
Фактически мой запрос выбора будет таким, как в сценарии
SELECT (amount1+ 10 / 100) FROM test_table
формула (amount1+ 10/100) в вышеуказанном запросе будет декодирована с пользовательского ввода. Некоторое время неправильный ввод от пользователя может быть таким.
(amount1+ + 10/100)
поэтому в момент выбора запрос не будет выполняться.
@sintakonte пользовательский ввод, который я упомянул, является формулой из построителя формул. поэтому, наконец, я сделал простой трюк, чтобы проверить запрос (формулу). выполните вставку или обновление в таблицу с помощью запроса выбора. В моем сценарии, когда я получаю результат из запроса select, мне нужно обновить столбец в таблице.
$this->db->trans_begin();
$this->db->query("UPDATE table2
JOIN (
SELECT (amount1+ 10 / 100) AS amnt, empID FROM test_table
) AS calculationTB
ON calculationTB.empID = table2.empID AND
SET fnTB.ssoEmployer=calculationTB.amnt");
if($this->db->trans_status() == false){
return ['error' => 1, 'message' => 'Error massage'];
}
$this->db->trans_commit();
form validation
или самостоятельно проверить - например, если вы ожидаете целое число, вы просто преобразуете пользовательские данные, такие как$amount = intval($this->input->post('amount');
и это - вы не можете винить БД в неправильном вводе пользователя, другой возможностью было бы использование$this->db->escape(...)