![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 17.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam :-).
Jestem początkującym koderem SQL i jestem świadom, że jeszcze nie rozumiem wszystkich jego zagadnień, możliwości i ograniczeń. W każdym razie problem wygląda następująco: Przy próbie "insertowania" danych do bazy MySQL, baza zwraca mi błąd podany niżej. Kod php wygląda tak: [php:1:f67f39cafa]$sql_query = "INSERT INTO table_name (userID, " . $_POST['optiontype'] . ") VALUES ('" . $userID . "', '" . $_POST['option'] . "')"; $result = mysql_query($sql_query);[/php:1:f67f39cafa]Jestem absolutnie pewny, że wszystkie zmienne (zarówno te z formularza, jak i te zdefiniowane globalne) są nadane i działają prawidłowo. Dla: - $userID jest nadana wartość "21" - $_POST['optiontype'] jest poprzez wcześniejszy formularz nadana wartość "1" - $_POST['option'] jest poprzez wcześniejszy formularz nadana wartość "1" Treść błędu bazy wygląda następująco: Cytat You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '1) VALUES ('21', '1')' at line 1 Nie wiem w czym robię błąd (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) . Na początku wydawało mi się, że zmienna nie może być nazwą kolumny tabeli (oczywiście zmienna nosi wartość ISTNIEJĄCEJ kolumny), jednak... skoro w treści błędu pokazuje że w miejsce nazwy kolumny wpisało wartość zmiennej - pomyślałem że problem nie tkwi jednak w tym. Więc... w czym? :?
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
1) Wyprintuj zapytanie i podaj je tutaj
2) Tworzenie zapytania bez filtrowania danych od usera jest bardzo niebezpieczne (SQL Injecton) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 8.05.2002 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
A masz w tabeli table_name columnę '1' ? Bo tak masz niby przypisane w $_POST['optiontype'] .
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 17.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat 1) Wyprintuj zapytanie i podaj je tutaj
1) print $result; nie daje efektów - nic nie jest wyświetlane.
2) Tworzenie zapytania bez filtrowania danych od usera jest bardzo niebezpieczne (SQL Injecton) 2) Mógłbyś powiedzieć coś więcej o filtrowaniu? :-) Cytat A masz w tabeli table_name columnę '1' ? Bo tak masz niby przypisane w $_POST['optiontype'] . Oczywiście, tak jak napisałem wcześniej:Cytat oczywiście zmienna nosi wartość ISTNIEJĄCEJ kolumny
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
filtrowanie - [manual:eb78cab028]strip_tags[/manual:eb78cab028], [manual:eb78cab028]mysql_escape_string[/manual:eb78cab028]
Nie możesz nazwać kolumny po prostu '1' tak samo jak w php nie nazwiesz zmiennej $1. Do dynamicznego wyciągania wartości kolumny możesz użyć np. funkcji ELT: [sql:1:eb78cab028]SELECT ELT($opcja,pole,pole2,pole3,pole4) as FROM tabela ....[/sql:1:eb78cab028] http://www.mysql.com/doc/en/String_functions.html |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 11:52 |