Autor Zpráva
kababus
Profil *
Dobrý den,

prosím o radu, mám dotaz:

$vyber = mysql_query("SELECT DISTINCT * FROM tabulky WHERE SUBSTRING(id,1,3)='$_GET[promenna]' ORDER BY id ");


a potřeboval bych aby se mi vybraly výsledky místo pro $_GET[promenna] pro celé pole, je toto možné? Problém je v tom že nevím kolik bude těch proměnných, takže se mi nechce to pole rozstrkávat do samostatných proměnných.

Moc děkuji!
king26
Profil
Pomocí IN.

Vypadalo by to nějak takto:
$vyber = mysql_query("SELECT DISTINCT * FROM tabulky WHERE SUBSTRING(id,1,3) IN (".implode(", ", $_GET[promenna]).") ORDER BY id");
kababus
Profil *
Moc Vám děkuji za snahu, ale bohužel:
WHERE SUBSTRING(id,1,3)=IN (".implode(", ", $_GET[promenna]).") ORDER BY


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 'IN () ORDER BY id' at line 1
Alphard
Profil
kababus:
Nápad správný, jen to dolaďte. Substring vrací string, takže musíte porovnávat taky s řetězcem (uvozovky). Stejně tak get proměnná už není součástí řetězce, takže klíč do apostrofů (uvozovek).
Dotaz si vypište a syntakticky opravte.
kababus
Profil *
Díky, teď se asi zeptám jako trouba, ale :takže klíč do apostrofů - co je klíč?
kababus
Profil *
Teď si tedy vůbec nejsem jistý, ale tohle by tedy bylo ok? Moc Vám děkuji za pomoc.

WHERE SUBSTRING(id,1,3)=IN (".implode("',' ", $_GET["promenna"]).") ORDER BY
Alphard
Profil
$vyber = mysql_query("SELECT DISTINCT * FROM tabulky WHERE SUBSTRING(id,1,3) IN ('".implode("', '", $_GET['promenna'])."') ORDER BY id");
Možná, nevím, jak vypadá ta proměnná.

Když pominu zabezpečení apod. Nejjednoduší by bylo použí nějaký pokročilejší db layer.
kababus
Profil *
Moc Vám děkuji že se mnou tak ztrácíte čas, ale tohle se bohužel chová jakoby žádný záznam neodpovídal.

Proměnná vypadá například takto: 133;112;199
AM_
Profil
není id náhodou číselného typu?
kababus
Profil *
Ano, to je.
Alphard
Profil
kababus:
Proměnná vypadá například takto: 133;112;199
To není pole. Je to normální řetězec. explode()
Vzhledem k číselnému typu ty aspostrofy možná nebudou nutné (nejsem si jistý, jestli MySQL správně porovná string a integer), ale fungovat to musí i s nimi.
kababus
Profil *
Moc všem děkuji, již je to ok. :) Původně jsem to tam měl, ale vypadlo mi zase to explode...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0