Problema con mysql_num_rows

Roberto91

Nuovo Utente
28 Mag 2010
6
0
0
Salve Ragazzi,
Sono alle prese con la registrazione di utenti. C'è un problema però : mysql_num_rows mi ritorna come risultato sempre 0 !!!. Quindi praticamente mi dice sempre che non ci sono righe all'interno del Database e invece è falso perchè l'inserimento funziona e ho inserito 4 righe. Come devo fare ????.
Questo è il codice :

<?php
//Connessione al database

$pass_crypt=sha1($_POST['Password']);
$sql="SELECT Username,Password FROM cliente WHERE Username='";
$sql=$sql . $_POST['requiredUsername'] . "' AND Password='";
$sql=$sql . $pass_crypt . "'";

$ris=mysql_query($sql,$conn);
$nrighe=mysql_num_rows($ris); //problema sulle righe !!!!
echo $nrighe;

if($nrighe!=0)
{
header("location: neg_utente.html"); // spedisce ad una pagina per l'avviso che User e Pass sono già presenti all'interno del Db. Non entra mai in questo caso perchè l'istruzione da sempre 0 !!!
die("la registrazione non è possibile con questo account");
}
else
{
include ("funzione.php");
$Nome= $_POST['requiredNome'];
$Cognome= $_POST['requiredcognome'];
$Data= $_POST['requiredData'];
$Sesso= $_POST['sesso'];
$Indirizzo= $_POST['Indirizzo'];
$Città = $_POST['requiredCittà'];
$Cap = $_POST['requiredCap'];
$Telefono = $_POST['Telefono'];
$Email =$_POST['requiredEmail'];
$User= $_POST['requiredUsername'];
$Pass = $pass_crypt ;

$sql= "INSERT INTO cliente (Nome,Cognome,Nascita,sesso,Indirizzo,Città,Cap,Telefono,Email,Username,Password) VALUES('" . $Nome . "','" . $Cognome . "','" . $Data ."','" . $Sesso . "','" . $Indirizzo . "','" . $Città . "','" . $Cap . "','" . $Telefono . "','" . $Email . "','" . $User . "','" . $Pass . "')";

$risultato = mysql_query($sql) or die("Query fallita: " . mysql_error() );

if($risultato)
{
header("location: index3.html");
die("Inserimento eseguito con successo");
}
}

mysql_close($conn);
?>
 
prova:
PHP:
$ris=mysql_query($sql,$conn) or die (mysql_error());
e vedi se ti restituisce qualche errore
 
Problema mysql_num_rows

Niente, non mi restituisce nessun problema....Comunque io l'ho pubblicato già su Altervista...non vorrei che sia un problema del comando sul database (creato su altervista).
 
ciao
un altro consiglio
metti un var_dump e qguarda come viene fatta la query

PHP:
//...................
$sql=$sql . $pass_crypt . "'";

var_dump($sql);
//.............................

poi dimenticavo prova a scrivere la quey così


PHP:
//............
$sql="SELECT Username,Password FROM cliente WHERE Username='";
$sql .= $_POST['requiredUsername'] . "' AND Password='";
$sql .= $pass_crypt . "'";
var_dump($sql);
//............
 
risposta

Ti ringrazio x esserti preoccupato del problema. Ho notato ke mi riporta il seguente errore :

string(120) "SELECT Username,Password FROM cliente WHERE Username='Roberto' AND Password='e54399cfa6f4efb29169f797f411f4d698662ac1'" Query fallita: Duplicate entry 'Roberto-e54399cfa6f4efb29169' for key 1
 
ciao
mi sembra che la query di select sia giusta, secondo me l'errore derviva dall'insert, non sono sicuro ma sembrerebbe che che tu abbia messo il campo Username a unico e nella tabella esiste di già un campo user con valore Roberto quindi non può inserirne un altro. devi verificare.
o metti togli il'unico al campo o fai una verifica dell'esistenza dell'user e, se esiste, devi dire all'utente di cambiarlo
 
risposta

Ciao,
senti il fatto che mi dia quel messaggio, mi va bene. Infatti sto facendo il login di un sito. Il problema è che quando mi registro con una Username e Password che già esistono all'interno del Db, mi deve mandare ad un'altra pagina e non mi deve visualizzare quel messaggio di errore. Ripeto, il messaggio di errore mi va bene però non capisco il perchè la "mysql_num_rows" mi da come valore sempre 0 !!. Dato che la spedizione ad un'altra pagina avviene se nrighe !=0, non entra mai in questo caso. Comunque è strano davvero....
C'è un comando in mysql che sostituisce la mysql_num_rows ???????
 
ciao
non so di preciso se esista, anche perche ho sempre usato mysql_num_rows, comunque guardo e poi ti so dire, però è un assurdo che non funzi se la query, come sembra, è fatta bene.
è una stupidaggine, ma nell'if io di solito uso

PHP:
if($nrighe > 0)
{
header("location: neg_utente.html"); // spedisce ad una pagina per l'avviso che User e Pass sono già presenti all'interno del Db. Non entra mai in questo caso perchè l'istruzione da sempre 0 !!!
die("la registrazione non è possibile con questo account");
}
//ecc....
comunque al posto dell'echo sotto mysql_num_rows metti un var_dump che ti dice non solo i lavore, ma anche il tipo (che dovrebbe essere int)
 
ciao, ho trovato questo, ma non so esattamente come usarlo, in quanto non l'ho mai usato

$sql="SELECT COUNT(*) FROM cliente WHERE Username='" . $_POST['requiredUsername'] . "' AND Password='". $pass_crypt . "'";
comunque ho trovato questo

$query = "SELECT count(*) AS tot FROM news";

Come si può notare non abbiamo selezionato alcuna colonna della tabella, ma abbiamo scelto di farci restituire una tabella con una sola colonna e una sola riga. La riga conterrà il numero di righe che rispondono ai criteri di selezione indicati. Nel nostro caso l'unico vincolo inserito è quello di appartenere alla tabella news (FROM news). Questo ci permetterà di ottenere il numero di articoli inseriti nella tabella. Tramite AS tot abbiamo indicato che nella tabella che otteniamo la colonna che contiene la somma si deve chiamare tot. Questo non è necessario, ma può essere utile nel caso in cui si utilizzano le funzioni.
Per ottenere il risultato utilizziamo i metodi usati fin'ora:

$result = mysql_query($query, $db);
$row = mysql_fetch_array($result);

Quindi il numero totale di articoli sarà contenuto in $row[tot].
dimenticavo se anche $row[tot] ti da zero l'errore è a monte.
 
Risposta

Ehi scusami tanto ma veramente mi stavo cervellando e alla fine ho capito qual'è il problema. Praticamente mi ero dimenticato di mettere all'interno della tabella "clienti" un campo auto_increment !!!!! :-). Dunque probabilmente la mysql_num_rows nn contava da nessuna parte !!!.
Scusami se ho fatto cervellare anche te. Cmq adesso mi viene fuori questo problema :

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 ''' at line 1.

Avrò commesso qualche errore di sintassi ?????
 

Discussioni simili