Autor Zpráva
samotar
Profil
Zdravím

pokud php úspěšně použije funkci mysql_query(); možu pak přes funkci mysql_fetch_array() ""vypsat"" data, co když ale budu mět v mysql dotazu třeba nějaké složitější výběrové podmínky? pak sice dotaz do mysql odešlu ale mysql_fetch_array() ""nevypíše"" nic. Je prosím vás nějaké hodnota (třeba if (něco == null) nebo tak) díky které bych poznal že sql dotaz nic nelalezl, ještě něž začnu data vypisovat?

Díky
Casero
Profil
samotar
mysql_num_rows()?
samotar
Profil
Díky =)
krteczek_jinde
Profil *

$dotaz = "SELECT * FROM `tabulka` WHERE `id` = " . intval($_GET['cisloClanku']);
$v = mysql_query($dotaz, $pripojeni);
if($v)
{
$p = mysql_num_rows($v);
if($p > 0)
{
//vrátilo to výsledky
$r = mysql_fetch_assoc($v);
}
else
{
//nevrátilo žáden záznam
}
}
else
{
echo mysql_error();
}

Jestli je to uplně správně si nejsem jisty, používám svoji db třídu, přístup je podobný jen mi při selectu muze vratit tři hodnoty, přičemž dotaz vypada uplne stejne:

$dotaz = "SELECT * FROM `tabulka` WHERE `id` = " . intval($_GET['cisloClanku']);
$v = $dbs($dotaz);
if(is_array($v))
{
//array => vrátila výsledky výpis treba pres foreach()
}
elseif($v === true)
{
//true => nevrátila nic
}
else
{
//a třetí možnost je text,vratila chybu
echo $v;
}

v kterem mi oznamuje že došlo k chybě v mysql dotazu, zároveň mi tento dotaz i loguje
Možná by třetí hodnota měla být false a text by měl být dostupný přes $dbs->errorMsg, ale me reseni mi vice vyhovuje
update a insert dotazy jdou dvojim zpusobem,

$dotaz = "UPDATE `tabulka` SET
`jmenoSloupce1` => " . $dbs->Osetri($hodnota1) . ",
`jmenoSloupce1` => " . $dbs->Osetri($hodnota1) . ",
`jmenoSloupce1` => " . $dbs->Osetri($hodnota1) . "
WHERE `id` = " . intval($_GET['idClanku']);
$v = $dbs->q($dotaz);....

nebo

$dotaz = "UPDATE `tabulka` SET ";
$array =
'jmenoSloupce1' => $hodnota1,
'jmenoSloupce2' => $hodnota2,
'jmenoSloupce3' => $hodnota3
);
$podminka = "WHERE `id` = " . intval($_GET['idClanku']);
$v = $dbs->in($dotaz, $array, $podminka);
...

pole se projde a ošetří se hodnoty fcí mysql_real_escape_string(), klíče se doplní o zpětné uvozovky, třetí parametr není povinný

Uvažuji, ji zveřejním, nevím však jestli je to vhodne pro větší nasazení. ale strávit čas zodpovídáním spousty dotazu mne od toho zatím dostatečně odradilo :-/

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: