Start Building Professional
Web Apps Today


 
Categories Question details Back To List
Question  posted by Cheryl! on Sep 10, 2009 14:01
open dhtmlx forum
empty cell creates invalid sql

Hi, testing sending data to a database table and all is working well. However, the update fails when a cell is left empty.
With debugger on, I looked in the log and it looks as though the sql that is generated puts quotes around the value and therefore triggering a sql error due to the fact that the field in the database is an integer field.

Quotes around a number seem to be ok, but an empty string is not according to postgres.

Is there a way to set a cell data type to be integer? Or perhaps I will have to somehow send '0' when the cell is empty rather than ''

Here is the log entry:

Edit operation started [GRID]
1_gr_id => 1
1_c0 => 1
1_c1 => 1234
1_c2 => blahblah
1_c3 =>
1_!nativeeditor_status => updated
ids => 1

Row data [1]
gr_id => 1
0 => 1
1 => 1234
2 => blahblah
3 =>
!nativeeditor_status => updated

Exec SQL: UPDATE pos_line_data SET line_no='1',m_product_id='1234',product_name='blahblah',quantity='' WHERE pos_line_data_id='1'

PostgreSQL error: ERROR: invalid input syntax for integer: ""
Answer posted by Support on Sep 11, 2009 02:11
Yes, both MySQL and PostgreSQL doesn't mind about quotes ( which prevents sql injection ) , but if you have in DB an integer field and incoming data is a string - the problem may occur ( MySQL mostly ignore it, but may be different for PostgreSQL )

>>Or perhaps I will have to somehow send '0' when the cell is empty rather than ''
function my_code($action){
      $quantity = $action->get_value("quantity");
      if ($quantity == "" ) //or any other check here
               $action->set_value("quantity","0"); //set 0 as default value
}
$grid->event->attach("beforeProcessing","my_code")

such code need to be added before render_sql or render_table command

Alternatively you can adjust client code to use 0 as default value of column ( but server side hook is preferable, because it will validate data for all kinds of operations )