проверить, успешно ли обработан запрос выбора MySQL

0

Я пытаюсь проверить правильность обработки запроса 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)

поэтому в момент выбора запрос не будет выполняться.

  • 0
    если у вас неправильный пользовательский ввод - вы должны использовать библиотеку form validation или самостоятельно проверить - например, если вы ожидаете целое число, вы просто преобразуете пользовательские данные, такие как $amount = intval($this->input->post('amount'); и это - вы не можете винить БД в неправильном вводе пользователя, другой возможностью было бы использование $this->db->escape(...)
Теги:
codeigniter

1 ответ

1
Лучший ответ

@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();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню