konto usunięte

Temat: [mysql] select * from baza where ...

... ((`Data F`='{$_POST['rok']}') OR (`Data F`='{$_POST['miesiac']}')) Czy takie zapoytanie jest wogóle możliwe do zrealizowania, bo w tym momencie otrzymuję zero wyników chociaż powinny być 3 :)

konto usunięte

Temat: [mysql] select * from baza where ...

echo $sql;

wklej to co ci wyskoczyło do PhpMyAdmin albo czegoś podobnego i zobacz co jest nie tak

konto usunięte

Temat: [mysql] select * from baza where ...

zmienne rok i miesiac są przekazywane z formularza.

Cały select wygląda tak

$result = mysql_query("SELECT * FROM `baza firmy` WHERE ((`Data F` IS NOT NULL) OR ((`Data F`='{$_POST['rok']}') AND (`Data F`='{$_POST['miesiac']}'))) AND (`Wydano` IS NULL)");

Jego pierwowzór wyglądał tak:

WHERE (`Data F` IS NOT NULL) AND ((`Wydano`<>'2001-01-01') OR (`Wydano` IS NULL))

Jednak dobrze by było mieć możliwość wyszukania.Marcin P. edytował(a) ten post dnia 07.01.10 o godzinie 17:17

konto usunięte

Temat: [mysql] select * from baza where ...

Przekształć `Data F` za pomocą funkcji na miesiąc i rok.
YEAR(`Data F`) itp. ?

konto usunięte

Temat: [mysql] select * from baza where ...

mogę poprosić w formie kodu źródłowego ?? raczkuję w tym temacie.

konto usunięte

Temat: [mysql] select * from baza where ...

Marcin P.:
mogę poprosić w formie kodu źródłowego ?? raczkuję w tym temacie.

;) Jakoś mnie zawsze zaskakujesz.. chyba o to ci chodzi:

OR ((YEAR(`Data F`)='{$_POST['rok']}')
AND (MONTH(`Data F`)='{$_POST['miesiac']}')))


Więcej tutaj:
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-f...

konto usunięte

Temat: [mysql] select * from baza where ...

Zaskakuję ? Czym?

konto usunięte

Temat: [mysql] select * from baza where ...

Rafał Wardas:
Marcin P.:
mogę poprosić w formie kodu źródłowego ?? raczkuję w tym temacie.

;) Jakoś mnie zawsze zaskakujesz.. chyba o to ci chodzi:

OR ((YEAR(`Data F`)='{$_POST['rok']}')
AND (MONTH(`Data F`)='{$_POST['miesiac']}')))


Więcej tutaj:
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-f...

Oj tak... i SQLInjection gotowe :)

konto usunięte

Temat: [mysql] select * from baza where ...

Szymon G.:
;) Jakoś mnie zawsze zaskakujesz.. chyba o to ci chodzi:

OR ((YEAR(`Data F`)='{$_POST['rok']}')
AND (MONTH(`Data F`)='{$_POST['miesiac']}')))

Oj tak... i SQLInjection gotowe :)

a takie fopa zawodowcowi nie przystoi :)
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: [mysql] select * from baza where ...

Standardowo przypominamy: $_POST bezpośrednio w SQL bardzo niezalecany.


Obrazek

konto usunięte

Temat: [mysql] select * from baza where ...

;-) pojęcie względne.. ale oczywiście macie racje :

Może meteoryt spadł i przed tym kodem jest :


$_POST['rok'] = isset($_POST['rok']) ? intval($_POST['rok']) : 0;

konto usunięte

Temat: [mysql] select * from baza where ...

i w takich miejscach przydają się typy zmiennych, mniej kombinowania by było

konto usunięte

Temat: [mysql] select * from baza where ...

W tym przypadku chyba na prepare statement trochę za wcześnie ;)

Przemek: Wszystko ma plusy i minusy.. ale faktycznie jakoś mnie słabi brak typów.

konto usunięte

Temat: [mysql] select * from baza where ...

Rafał Wardas:
;-) pojęcie względne.. ale oczywiście macie racje :

Może meteoryt spadł i przed tym kodem jest :


$_POST['rok'] = isset($_POST['rok']) ? intval($_POST['rok']) : 0;


No i to niby pomoże?

Co jeśli w bazie jest data '0000-00-00' (a może tak być, co jest opisane w tym linku, który podałeś, albo gdzieś tam obook).

$_POST['rok'] = '34sklfklf';

Ile to jest: intval('34sklfklf')???
Ano jest to 34, o czym można poczytać tutaj: http://www.php.net/manual/en/language.types.string.php...

Czy napisy też w taki magiczny sposób będziesz zmieniać, że jeśli nie podano napisu, to do sqla wrzucamy 0?

Ale za to mi poprawiłeś humor jakoś, dzięki.

konto usunięte

Temat: [mysql] select * from baza where ...

Szymon G.:
..

No i to niby pomoże?

Co jeśli w bazie jest data '0000-00-00' (a może tak być, co jest opisane w tym linku, który podałeś, albo gdzieś tam obook).

$_POST['rok'] = '34sklfklf';

Ile to jest: intval('34sklfklf')???
Ano jest to 34, o czym można poczytać tutaj: http://www.php.net/manual/en/language.types.string.php...

Czy napisy też w taki magiczny sposób będziesz zmieniać, że jeśli nie podano napisu, to do sqla wrzucamy 0?

Ale za to mi poprawiłeś humor jakoś, dzięki.
Nabierz trochę dystansu człowieku, za każdym razem jak się tutaj wypowiadasz to wyrzucasz z siebie jakieś wewnętrzne problemy i się wykłócasz przez 20 postów ;]

Co da zasypanie go dziesiątkami informacji, przez które będzie grzebał to 4 razy dłużej a problem nie dotyczył bezpieczeństwa?
Zamiast się czepiać i podwyższać swoje ego napisz mu 20 linii kodu i pokaż jak ma zbindować zapytanie.

konto usunięte

Temat: [mysql] select * from baza where ...

Rafał Wardas:
Szymon G.:
..

No i to niby pomoże?

Co jeśli w bazie jest data '0000-00-00' (a może tak być, co jest opisane w tym linku, który podałeś, albo gdzieś tam obook).

$_POST['rok'] = '34sklfklf';

Ile to jest: intval('34sklfklf')???
Ano jest to 34, o czym można poczytać tutaj: http://www.php.net/manual/en/language.types.string.php...

Czy napisy też w taki magiczny sposób będziesz zmieniać, że jeśli nie podano napisu, to do sqla wrzucamy 0?

Ale za to mi poprawiłeś humor jakoś, dzięki.
Nabierz trochę dystansu człowieku, za każdym razem jak się tutaj wypowiadasz to wyrzucasz z siebie jakieś wewnętrzne problemy i się wykłócasz przez 20 postów ;]

Ależ dystans mam, ech, chyba nie ma sensu tutaj czegokolwiek pisać, dziwne, że w innych gremiach jakoś ludzie chętnie się uczą, a i krytykę przyjmują.
Co da zasypanie go dziesiątkami informacji, przez które będzie grzebał to 4 razy dłużej a problem nie dotyczył bezpieczeństwa?

I co, może mam przeprosić za to, że znalazłem problem w kodzie? No to przepraszam.
Zamiast się czepiać i podwyższać swoje ego napisz mu 20 linii kodu i pokaż jak ma zbindować zapytanie.

A proszę (od razu mówię, że to tak na szybko pisane, coś może być nie tak, acz sens chyba jest OK):

$sql = "
SELECT *
FROM `baza firmy`
WHERE
(
(`Data F` IS NOT NULL)
OR
(
(YEAR(`Data F`)=:rok)
AND
(MONTH(`Data F`)=:miesiac)
)
)
AND (`Wydano` IS NULL)";

$dsn = 'mysql:dbname=wp;host=127.0.0.1';
$user = 'login';
$password = 'password';
$dbh = null;

try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

$sth = $dbh->prepare($sql);
$sth->bindValue(':rok', $_POST['rok'], PDO::PARAM_INT);
$sth->bindValue(':miesiac', $_POST['miesiac'], PDO::PARAM_INT);

$sth->execute();
$result = $sth->fetchAll();

PS) oczywiście krytyka wszelka mile jest widziana.

konto usunięte

Temat: [mysql] select * from baza where ...

Panowie! spokój mi tu :) Bezpieczeństwo bezpieczeństwem. To ważne i biorę to pod uwagę. Zaraz wypróbuję ten kod z ostatniej wypowiedzi Szymona.

konto usunięte

Temat: [mysql] select * from baza where ...

sprawdź czy masz odhaczony moduł PDO w PHP

konto usunięte

Temat: [mysql] select * from baza where ...

Przesadziłeś chyba z nawiasami i może się pojawić problem z kodowaniem a tak to jestem jak najbardziej za ;)

R.
Jakub L.

Jakub L. Programista

Temat: [mysql] select * from baza where ...

Rafał Wardas:
;-) pojęcie względne.. ale oczywiście macie racje :

Może meteoryt spadł i przed tym kodem jest :


$_POST['rok'] = isset($_POST['rok']) ? intval($_POST['rok']) : 0;

Może zamiast modyfikować tablicę $_POST (bo może się jeszcze oryginalna wartość kiedyś przyda) wyrzucić to do nowej zmiennej?

Następna dyskusja:

SELECT Biuletyn FROM Golden...




Wyślij zaproszenie do