Autor Zpráva
TSD
Profil *
Hodně začátečníků - vidím to sám na sobě, nemusím se ani dívat moc zpátky - si neuvědomuje jednu možnost jak ladit dotazy.

příklad:
mám v php:


$ret=mysql_query("UPDATE roOsoby SET last_login = ".mktime()." WHERE ID =".$zaznam["ID"]."");


když zjistím že to nefunguje, stačí si dotaz dát do proměnné, takto


$qry="UPDATE Osoby SET last_login = ".mktime()." WHERE ID =".$zaznam["ID"];
$ret=mysql_query($qry);


pak ho někde pomocí echo vypsat a vložit v manažeru mysql jako příkaz. Ani tam to nebude fungovat, ale navíc uvidím chybovou hlášku.


Ta rada je hodně hodně triviální, ale kdybych si tohle rekněme před rokem někde přečetl, ušetřilo by mi to pár hodin života.
nightfish
Profil
TSD
v současném FAQ je tato problematika popsána, jen možná doplním možnost vypsání dotazu při chybě
$res = mysql_query($q = "UPDATE ...") or print($q."<br>".mysql_error());
Kajman_
Profil *
Jestli tam nedát rovnou nějakou funkci na to logování... něco jako...

function query($text)
{
	//pro logovani dotazu...
	global $_sql_log;
	$_sql_log.=htmlspecialchars($text)."<br>";
	if(!$res=mysql_query($text))
		$_sql_log.="<b style='color:red'>".htmlspecialchars(mysql_error())."</b><br>";
	else
	{
		$ovlivneno=mysql_affected_rows();
		if($ovlivneno>0)
			$_sql_log.="<b style='color:green'>".htmlspecialchars($ovlivneno)."</b><br>";
	}
	return $res;  
}


A že když budou používat query(), tak si pak můžou pro debug vypsat $_sql_log v <pre>.
TSD
Profil *
teď nevím.. myslíš to vážně?

To co jsem navrhoval, je něco, co se hodí člověku, který netuší že v php je něco jako funkce, natož aby je uměl používat. Opět .. vlastní zkušenost.

Mám pocit, že si ty začátky pamatuju o hodně líp než vy :)

už tohle
$res = mysql_query($q = "UPDATE ...") or print($q."<br>".mysql_error());

jestli to je (kromě toho vlastního sql) myšleno doslova, tak mi to uniká.
Alphard
Profil
Kajman_
kdyby jsi to tam dával, nebylo by na škodu doplnit čas potřebný k provedení dotazu

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