2012-03-06 3 views
0

Я хочу insert/update данных в таблицу MySQL с использованием данных с csv -like:Как преобразовать String в Integer в PHP?

function execInsertOrUpdateCompteRendu($compterendu) // here $compterendu is something like this : -1;2012/03/06 09h 50mn;3;1; 
{ 
     $resultat = explode("\n",$compterendu); 
     $connec = mysql_connect("192.168.1.123:3306","root", "mysqlroot"); 
     mysql_set_charset('utf8', $connec); 
     mysql_select_db("finance",$connec); 
     for($i = 0; $i < count($resultat) ; $i++) 
     { 
      $valeur=explode(";",$resultat[$i]); 
      if ($valeur[0] > 0) 
      { 
       $requete = mysql_query("UPDATE compte_rendu SET 
       cr_date = '".convertFromDateHM($valeur[1])."', 
       cr_lieu = '".$valeur[2]."', 
       cred_id = '".$valeur[3]."', 
       cr_resultat = '".$valeur[5]."', 
       cr_comment = '".$valeur[6]."', 
       adc_id = '".$valeur[7]."' 
       WHERE cr_id = '".$valeur[0]."'"); 
      } 
      else 
      { 
       $requete = mysql_query("INSERT INTO compte_rendu SET 
             cred_id = '".$valeur[3]."', 
             cr_date = '".convertFromDateHM($valeur[1])."', 
             cr_lieu = '".$valeur[2]."', 
             cr_resultat = '".$valeur[5]."', 
             cr_comment = '".$valeur[6]."', 
             adc_id = '".$valeur[7]."'"); 
      } 
     } 
     return $resultat[0]; 
} 

Этот PHP код web-service который я называю от клиента J2ME. Проблема в том, что новые данные не вставляются в таблицу при запуске приложения J2ME! Я отлаживал программу java и ошибок там нет. Итак, что не так в моем коде PHP?

+0

Что делает окончательный запрос выглядит? Вы проверили 'mysql_error' за ошибки? – deceze

+0

Есть ли ошибки в журнале ошибок на вашем сервере? Если это так, разместите их в своем вопросе – DKSan

+0

Вы обертываете все, что вы вставляете/обновляете с помощью кавычек в своем запросе (не обязательно). Я собираюсь предположить, что вы говорите об идентификаторах в отношении string-> integer. Таким образом, в некоторых разделах вы должны иметь 'adc_id =". $ Valeur [7]. "' Вместо 'adc_id = '. $ Valeur [7]."' '. Тем не менее, для начинающих вы должны использовать подготовленные заявления – Kurt

ответ

0

Во-первых, вы можете попробовать избежать всего текста, который вы вводите в свою базу данных, с помощью mysql_real_escape_string - в противном случае вы оставите потенциал для возникновения проблем. например

//cr_lieu = '".mysql_real_escape_string($valeur[2])."', 

Также - чтобы преобразовать строку в целое число?

$int = (int)$string; 
1

Используйте подготовленные операторы MySQLi. Затем вы можете привязывать параметры как целые числа, удвоения, строки или капли. Прочтите сообщение Mysqli Manual и в отношении привязки раздела bind_param.

В отношении ваших запросов: Вы не должны обернуть целые значения в кавычках