Jak správně postavit filtrování v PDO? – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak správně postavit filtrování v PDO? – MySQL – Fórum – Programujte.comJak správně postavit filtrování v PDO? – MySQL – Fórum – Programujte.com

 

Matěj Andrle+1
Grafoman
12. 10. 2014   #1
-
0
-

Dobrý den,
ve filtrech tkví problém následující: Mohu zvolit, že chci ženy, anebo muže, avšak i obě pohlaví! Lze se vyhnout v PHP obrovskému větvení, kteréžto bude testovat každý prvek WHERE - zda ho tam dávat či nikoliv? Tedy nějak připravit PDO, aby stačilo zavolat execute s polem hodnot... Koukal jsem, asi by šlo udělat OR pro každou část filtru - tedy v SQL prvně otestovat zda je testovaná hodnota null a pak zda sloupec skýtá této hodnoty. Tím mi však SQL string nakyne do neuvěřitelných hodnot. Funguje to, ovšem vskutku to nejde nějak jednodušeji?
Děkuji.

Nahlásit jako SPAM
IP: 78.136.139.–
Kit+15
Guru
12. 10. 2014   #2
-
0
-

#1 Matěj Andrle
Co znamená "neuvěřitelných hodnot"? Mám funkční SQL dotaz na 90 řádek.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Matěj Andrle+1
Grafoman
12. 10. 2014   #3
-
0
-

#2 Kit
Pokud chci všechny lidi, musím dát testovaný sex na NULL. Pak se v SQL musím ptát zda je sex NULL, či zda se rovná hodnota sloupce hodnotě proměnné sex. Jinak to vážně nejde? Někde jsem viděl slovíčko ANY...

Nahlásit jako SPAM
IP: 78.136.139.–
Flowy0
Věrný člen
12. 10. 2014   #4
-
0
-

   

sex IN ('male', 'female')
Nahlásit jako SPAM
IP: 95.103.190.–
https://github.com/Flowy
Kit+15
Guru
12. 10. 2014   #5
-
0
-
Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:221:5...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Matěj Andrle+1
Grafoman
12. 10. 2014   #6
-
0
-

#4 Flowy
Ano - mohu dát otazníky do prepare PDO a pak do execute pole. Ale já mám asi 6 dalších filtrů! Pohlaví, kategorie, váha,... To je nekolik polí in a na ty už tento jednoduchý systém nestačí. Anebo jak jinak se vyhnu injekcím?

Nahlásit jako SPAM
IP: 78.136.139.–
Kit+15
Guru
12. 10. 2014   #7
-
0
-

#6 Matěj Andrle
Stačí. Místo "?" můžeš také používat ":sex", abys neztratil přehled.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:221:5...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Matěj Andrle+1
Grafoman
12. 10. 2014   #8
-
0
-

#7 Kit
Nechápeš to. In je pole - pole do PDO dostanu jedině s otazníky... :ddd je pro asociativní pole s hodnotami. Hodnotou však nemůže být další pole - to jsem zkoušel včera. Funguje jen toto:

<?php
include "database.php";

$id = $_POST["id"];
$libraryManager = new DatabaseManager();
$statement = $libraryManager->pdoInstance->prepare("DELETE FROM `member` WHERE `id` IN (".str_repeat("?,", count($id) - 1)."?)");

if($statement->execute($id))
	echo "Smazáno!";
else
{
	$error = $libraryManager->pdoInstance->errorInfo();
	echo $error[2];
}
?>

Kde $id je pole. Ale jak jsem psal - mám více filtrů => více polí...

Nahlásit jako SPAM
IP: 78.136.139.–
Kit+15
Guru
12. 10. 2014   #9
-
0
-

#8 Matěj Andrle
Když máš více polí, můžeš použít array_merge().

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:221:5...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý