Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: automatyczne generowanie zapytania sql - problem
Forum PHP.pl > Forum > Przedszkole
dado
skrobnąłem kod którego zadaniem jest automatyczne generowania zapytania UPDATE z tablicy $_POST formularza:
zmienna $_POST[n] zawiera nazwy pól w tabeli baz danych, przykładowo:
  1. <?php
  2. $_POST[n]=&#092;"lp|nazwa|var\";
  3. ?>


  1. <?php
  2. //wyodrebnienie nazw pola
  3.     $nazwa = explode(&#092;"|\", $_POST[n]);
  4.  
  5. //początek zapytania
  6.     $sql .= &#092;"UPDATE \" . $_POST[tbll] . \" SET&nbsp;\";
  7.     
  8.     for($i=0; $i<=count($nazwa)-2; $i++)
  9.     {
  10. //nazwa pola
  11.     $nn=$nazwa[$i];
  12.  
  13. //liczba pól
  14.     $llp=count($nazwa)-2;
  15.  
  16. //budowanie sql-a
  17.     $sql .= &#092;"  &nbsp;\".$nazwa[$i].\" = '\".$_POST[$nn].\"'\";
  18.     
  19.  
  20. //mój nieudolny patent na przecinki
  21.     if(!($i==$llp)){$p=&#092;", \";}else{$p=\"\";}
  22.  
  23. //dodanie przecinka
  24.     $sql .= &#092;"$p\";
  25.     }
  26.  
  27. //zakonczenie petli i dodnie where
  28.     $sql .=&#092;" WHERE lp='\".$_POST[idd].\"'\";
  29.  
  30. // no i wio
  31.     $query=mysql_query($sql)or die(mysql_error());
  32. ?>


problem jest z przecinkami w zapytaniu po ostanim polo przed klauzorą WHERE nie może być tego przecinka nie wiem jak zrobić żeby go nie było . Proszę o podpowiedź bo wena mnie opuściła.

wywala błąd:
Cytat
You have an error in your SQL syntax near '   lp = '1',  nazwa = 'title',  var = '---==SKUP ZŁOMA ' at line 1
nospor
Kod
$prz=false;
for($i=0; $i<=count($nazwa)-2; $i++)
    {
if ($prz) $sql.=',';
else $prz=true;
//nazwa pola
    $nn=$nazwa[$i];

//liczba pól
    $llp=count($nazwa)-2;

//budowanie sql-a
    $sql .= "  ".$nazwa[$i]." = '".$_POST[$nn]."'";
    

    }

A tak przy okazji te &nbsp w zapytaniu są niepotrzebne. Wystarczy spacja.
dado
poniższy kod
  1. <?php
  2.  
  3.  $nazwa = explode(&#092;"|\", $_POST[n]);
  4. $sql .= &#092;"UPDATE \" . $_POST[tbll] . \" SET&nbsp;\";
  5. for($i=0; $i<=count($nazwa)-2; $i++)
  6. {
  7. $nn=$nazwa[$i];
  8. $llp=count($nazwa)-2;
  9. $sql .= &#092;" &nbsp;\".$nazwa[$i].\" = '\".$_POST[$nn].\"'\";
  10. if(!($i==$llp)){$p=&#092;", \";}else{$p=\"\";}
  11. $sql .= &#092;"$p\";
  12. }
  13. $sql .=&#092;" WHERE lp='\".$_POST[idd].\"'\";
  14. $query=mysql_query(&#092;"$sql\")or die(mysql_error());
  15. echo &#092;"<br>\".$sql.\"<br>\";
  16. ?>


generuje takiego sql-a
  1. UPDATE config SET lp = '2', nazwa = 'tbl_linki', var = 'linki' WHERE lp='2'


niby ok ale wywala błąd
Cytat
You have an error in your SQL syntax near '  lp = '2',  nazwa = 'tbl_linki',  var = 'linki' where' at line 1

nie wiem co jest grane
dagor
Można zacząć od umieszczenia nazw zmiennych między '' (apostrofami) smile.gif
crash
Jakiego typu jest komórka lp w bazie? Przypadkiem nie INT? Jeśli tak to nie dawaj jej w cudzysłowiu...
dylu
o ile dobrze zrozumialem temat to moj patent moze tez nie zbyt madry ale robilem chyba tak:
//-----------------------------------------------
$pola = " pole,pole,pole,";
$pola = substr($pola, 0, count($pola-1));
//-----------------------------------------------

dylu
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.