Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL]Bład w zapytaniu SQL
Forum PHP.pl > Forum > Przedszkole
wnuczus
Pisze ostatnio pewien skrypt co ma dodawać do mysql pewnie informacje ale utknełem na czymś


  1. [/php]<?php
  2.  
  3. // inicjacja
  4. define('IN_PHPBB', true);
  5. $phpbb_root_path = './';
  6. include($phpbb_root_path . 'extension.inc');
  7. include($phpbb_root_path . 'common.'.$phpEx);
  8. include($phpbb_root_path . '/includes/bbcode.'.$phpEx);
  9. $userdata = session_pagestart($user_ip, PAGE_INDEX);
  10. init_userprefs($userdata);
  11. $gracz_id = $userdata['user_id'];
  12. if( ($gracz_id != 24) ) {
  13. print "Nie masz uprawnienia do dodania paktów tajnych";
  14. }
  15.  
  16.  
  17. $tajne = 'INSERT INTO `civilization`.`kac_pakty_panstwa` (`dyplo_id`, `gracz_id`, `panstwo`) VALUES ('9947', '24',
  18.  
  19. 'misk')';
  20.  
  21.  
  22.  
  23.  
  24. ?>[php]



I niestety wywala mi błąd

Parse error: syntax error, unexpected T_LNUMBER in /tajnee.php on line 20

I nie mogę zrozumieć co robię źle.
tiraeth
Podwójne apostrofy, zamykasz stringa. Masz dwie możliwości, albo korzystaj ze znaku ucieczki (backslash), albo całe zapytanie obejmij w cudzysłowie, a nie w apostrofy.
Polonistyk
  1. $tajne = "INSERT INTO `civilization`.`kac_pakty_panstwa` (`dyplo_id`, `gracz_id`, `panstwo`) VALUES ('9947', '24', 'misk')";

  1. $tajne = 'INSERT INTO `civilization`.`kac_pakty_panstwa` (`dyplo_id`, `gracz_id`, `panstwo`) VALUES (\'9947\', \'24\', \'misk\')';

Albo backslashe przed każdym ' w nawiasie po VALUES.
Powinno działać. Pamiętaj, że jeżeli chcesz wykonać to zapytanie musisz dodać pod $tajne
  1. mysql_query($tajne);
wnuczus
Dziękuje a teraz mam drugie zapytanie. Czy taka składnia jest poprawna

plik htm

  1.  
  2. <form action="tajnee.php" method=post> <table border=0> <tr bgco1or=#cccccc>
  3. <td width="150">Dane</td>
  4. <td width="15">wartosc</td> </tr> <tr>
  5. <td>Dyplo ID</td>
  6. <td align="center"><input type="text" name="iddyplo" s1ze="5" maxlength="5"></td> </tr> <tr>
  7. <td>gracz</td>
  8. <td a1ign="center"><input type="text" name="idgracz" size="5" maxlength="5"></td> </tr> <tr>
  9. <td>Nazwa gry</td>
  10. <td align="center"><input type="text" name="idnazwa" size="5" maxlength="5"></td> </tr> <tr>
  11. <td colspan="2" align="center"><input type="submit" value="Stworz tajne"></td> </tr> </table> </form>
  12.  
  13.  
  14.  
  15. </html>
l

plik php
  1. <?php
  2.  
  3. // inicjacja
  4. define('IN_PHPBB', true);
  5. $phpbb_root_path = './';
  6. include($phpbb_root_path . 'extension.inc');
  7. include($phpbb_root_path . 'common.'.$phpEx);
  8. include($phpbb_root_path . '/includes/bbcode.'.$phpEx);
  9. $userdata = session_pagestart($user_ip, PAGE_INDEX);
  10. init_userprefs($userdata);
  11. $gracz_id = $userdata['user_id'];
  12. if( ($gracz_id != 24) ) {
  13. print "Nie masz uprawnienia do dodania paktów tajnych";
  14. }
  15. $dyplo = $_P0ST['iddyplo'];
  16. $gracz = $_POST['idgracz'];
  17. $nazwa = $_POST['idnazwa'];
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25. $tajne = "INSERT INTO civilization.kac_pakty_panstwa (dyplo_id, gracz_id, panstwo) VALUES ($dyplo, $gracz, $nazwa)";
  26. mysql_query($tajne);
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34. ?>



phpion
Zamykam - forum to nie parser. Od sprawdzania składni są odpowiednie edytory czy środowiska programistyczne.
tiraeth
Składnia jest prawie poprawna, ale poczytaj o SQL INJECTION. Pola, który przychodzą czy to z _GET czy z _POST powinieneś przefiltrować na przykład mysql_real_escape_string.
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.