2012-02-17 2 views
1

Я хочу, чтобы объединить данные в таблице MySQL из PHP:Что не так в этом PHP-коде?

<?php 
function convertFromDateHM($str) 
{ 
    $tmp=$str; 
    $Y=substr($tmp, 6,4); 
    $M=substr($tmp, 3,2); 
    $D=substr($tmp, 0,2); 
    $H=substr($tmp, 13,2); 
    $MN=substr($tmp, 18,2); 
    $tmp=$Y.'-'.$M.'-'.$D.' '.$H.':'.$MN.':00'; 
    return $tmp; 
} 
function mergeCompteRendu($compterendu) 
    { 
     $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') // case of update 
      { 
       $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]."'"); // cr_id is the primary key which is auto_increment 
      } 
      else // case of insert : here is the problem raised 
      { 
       $requete = mysql_query("INSERT INTO compte_rendu(cr_date,cr_lieu,cred_id,cr_resultat,cr_comment,adc_id) 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]."' "); 
      } 
     } 
     return $resultat[0]; 
    } 

NB: колонка "cr_date" имеет datatypedatetime.

Этот PHP является webservice, который я звоню из J2ME. Когда я запускаю приложение, запись не вставляется в базу данных (я проверил ее через SQLYog). Это случай insert, который вызывает проблему, update в порядке.

Итак, что не так в моем коде?

+1

Довольно много вещей. –

+2

Синтаксис вставки не является TableName (Columns ..) Set (values) Он отличается от обновления. Вы должны сделать значения Insert into TableName (columns ...) (значения ...) –

ответ

0

Добавленное синтаксис запросов в коде неправильно , Вы должны использовать любую из следующих форм.

INSERT into TABLE_NAME SET column_name1='value1',column_name2='value2' 

или

INSERT into TABLE_NAME (column_name1,column_name2) VALUES('value1','value2') 

Но в своем коде вы перепутали синтаксис вставки, так что не работает. Вы можете использовать die(mysql_error()), чтобы увидеть точную ошибку, сгенерированную MySQL.

0

Нет необходимости указывать столбец (cr_date,cr_lieu,cred_id,cr_resultat,cr_comment,adc_id) при использовании INSERT с SET

Попробуйте Ниже:

$requete = mysql_query("INSERT INTO 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]."' "); 

ИЛИ Вы можете использовать:

$requete = mysql_query("INSERT INTO compte_rendu(cr_date,cr_lieu,cred_id,cr_resultat,cr_comment,adc_id) VALUES (
             '".convertFromDateHM($valeur[1])."', 
             '".$valeur[2]."', 
             '".$valeur[3]."', 
             '".$valeur[5]."', 
             '".$valeur[6]."', 
             '".$valeur[7]."')");