Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Krótki problem językowy SQL
Forum PHP.pl > Forum > Bazy danych > MySQL
Foxer
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 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? :?
Seth
1) Wyprintuj zapytanie i podaj je tutaj
2) Tworzenie zapytania bez filtrowania danych od usera jest bardzo niebezpieczne (SQL Injecton)
krzych
A masz w tabeli table_name columnę '1' ? Bo tak masz niby przypisane w $_POST['optiontype'] .
Foxer
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
spenalzo
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
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.