Mam kod:
if (empty($CounterID)){
$SQLText="SELECT * FROM Tcounter WHERE SPath='$SPath'";
$result=mysql_query($SQLText);
if (mysql_num_rows($result)==0){ ----- line 10
$SQLText="INSERT INTO Tcounter (SPath,Visits) VALUES ('$SPath',1)";
$result=mysql_query($SQLText);
$Visits=1;
$CounterID=mysql_insert_id($result); ---- line 14
}
Stale mi zobrazuje tieto chyby a nechapem preco:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /3w/wz.cz/m/medvede/pocitadlo/counter_inc.php on line 10
Warning: mysql_insert_id(): supplied argument is not a valid MySQL-Link resource in /3w/wz.cz/m/medvede/pocitadlo/counter_inc.php on line 14
Prosim pomozte.
<HTML>Jaké chyby hlásí dotazy? (dají se vytáhnout pomocí funkce mysql_error())</HTML>
nevidim ze by ses spojoval s databazi. alespon nemas vybranou databazi kde je tabulka Tcounter
VLADIS (knr-presov.xf.cz)
odkaz na cely kod?
soubor.php.txt
"nevidim ze by ses spojoval s databazi"
to prvak
"Jaké chyby hlásí dotazy?"
to druhak
function sq($query,$text='') {$res = mysql_query($query) or die("<hr>MySQL Err".$text.": $query<hr>".mysql_error()); return $res;} //debug mode
function sq($query,$text='') {$res = mysql_query($query) or die("<hr>MySQL Err".$text.": $query<hr>".mysql_error()); return $res;} //debug mode
$SQLText = "SELECT * FROM Tcounter WHERE SPath='$SPath'";
// $result = mysql_query($SQLText);
$result = sq($SQLText);
mysql_num_rows($result)
dej tam pred to
echo $result; // napise undefined, not set a pod
jinymi slovy, SQL vrati error nebo neexistujici vysledek -1
Ok, a ted si otevri PHPmyAdmina a zkus tam ten samy SQL dotaz, co se zobrazi na
echo $SQLText;
Mel by ti zahlasit totez, nalezeno 0 radku nebo chybu.
cely moj kod je tento : <?
$SPath=$PATH_INFO;
$CookieDeath=20;
@$Conn=mysql_connect("xxx","xxx","xxx");
mysql_select_db("xxx");
if (empty($CounterID)){
$SQLText="SELECT * FROM Tcounter WHERE SPath='$SPath'";
$result=mysql_query($SQLText);
echo $result; ------------- toto som tu pridal teraz ako si napisal ale stale mi to ukazuje
if (mysql_num_rows($result)==0){
$SQLText="INSERT INTO Tcounter (SPath,Visits) VALUES ('$SPath',1)";
$result=mysql_query($SQLText);
$Visits=1;
$CounterID=mysql_insert_id($result);
}
else{
$row=mysql_fetch_array($result);
$Visits=++$row["Visits"];
$CounterID=$row["CounterID"];
$SQLText="UPDATE Tcounter SET Visits=$Visits WHERE CounterID=$CounterID";
$result=mysql_query($SQLText);
}
}
else{
$SQLText="SELECT Visits FROM Tcounter WHERE CounterID=$CounterID";
$result=mysql_query($SQLText);
$row=mysql_fetch_array($result);
$Visits=$row["Visits"];
}
mysql_close($Conn);
setcookie("CounterID",$CounterID,(time()+$CookieDeath*60));
?>
-----------------------------------------------------
a toto je tvorba tabulky
CREATE TABLE Tcounter(
CounterID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
SPath VARCHAR(122),
Visits INT
);
Tak misto echo $result dej echo mysql_error();
A za druhe odstran @ pred mysql_connect. Ten zavinac muze skryt skutecnou chybu.
VLADIS (knr-presov.xf.cz)
Stale jsi nepochopil, co po tobe chceme.
1. pripojeni
sem ti tam sice zkopiroval 2 radky, ktere meli byt tyto:
$SQLserver = mysql_connect($SQLhost,$SQLuser,$SQLpsw) or die("Err: connect DB server!" . mysql_error());
$SQLdb = mysql_select_db($SQLdbname,$SQLserver) or die ("Err: connect DB!" . mysql_error());
@ - zpusobi to, ze ti nezobrazi chybu, kdyz nastane
Cili, kdyz si ten kod upravis pro svuj pripad, tak ti to vypise chybu uz kdyz se mu nepodari pripojit.
Nicmene je zvlastni, ze radek:
mysql_select_db("xxx");
nehlasi problem s vyberem databaze a navic ho mas spatne symbolicky zapsany. Takze tezko rici, jak to je original. Co kdyby jsi sem dal kompletni pripojeni a jenom heslo napsal jako HESLO ?
2. sql prikazy
function sq($query,$text='') {$res = mysql_query($query) or die("<hr>MySQL Err".$text.": $query<hr>".mysql_error()); return $res;} //debug mode
$SQLText = "SELECT * FROM Tcounter WHERE SPath='$SPath'";
// $result = mysql_query($SQLText); <---- zakomentovane
$result = sq($SQLText);
protoze funkce sq uz je upravena o zminene mysql_error (viz Nipal), a soucasne to vypise cely SQL dotaz, aby sis prohledl, zda mas v nem problem ECHO a jeste to zastavi program pro dalsi operace DIE.
Funkci sq po odladeni zakomentujes a upravis jako:
function sq($query,$text='') {$res = mysql_query($query); return $res;}
Cimz dosahnes stejneho zapisu, jako ted mas.
Jenze ty si stale nedas rici a mas to takto:
$result=mysql_query($SQLText);
Tak to aspon uprav jako
$result=mysql_query($SQLText) or die(mysql_error());