Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Krótki problem językowy SQL
Foxer
post
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? :?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Seth
post
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)
Go to the top of the page
+Quote Post
krzych
post
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'] .
Go to the top of the page
+Quote Post
Foxer
post
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
2) Tworzenie zapytania bez filtrowania danych od usera jest bardzo niebezpieczne (SQL Injecton)
1) print $result; nie daje efektów - nic nie jest wyświetlane.
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
Go to the top of the page
+Quote Post
spenalzo
post
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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 11:52