Contare il numero di righe con php5

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
raga aiutatemi epr favore che sto impazzendo

non accetta mysql_num_rows e le ho provate di tutte le maniere anche con COUNT(*)

non c'è veerso di farmi restituire il numero di righe che risultano da una query

sopratutto se la query non trova record deve restituirmi 0

ne sapete qualcosa?
 
è una semplice query

queste le due prove più significative
PHP:
$sqlquery = "SELECT * FROM tabella  WHERE ID != '' $var";
$res = mysql_query($sqlquery);
if(mysql_num_rows($res))   $number2=mysql_num_rows($res);
if($number2>70)		{		$nr=70;			}

PHP:
$sqlquery = "SELECT COUNT(*) as numTot FROM tabella  WHERE ID !='' $var  ";
$res = mysql_query($sqlquery);
$row = mysql_fetch_array($res);
$number2 = $row['numTot'] ;

if($number2>70)		{		$nr=70;			}
PHP:
$sqlquery = "SELECT *  FROM tabella WHERE  $var ";
$res = mysql_query($sqlquery);
while($row = mysql_fetch_array($res)){
$ID= $row['ID'] ;
}
$number2=count($ID);
if($number2>70)		{		$nr=70;			}

ho usato anche un if($result) ma nisba non c'è modo di contare le righe risultanti anche se sono pari a 0

in $var c'è semplciemente un AND x=y se si verifica una variabile.

Mi sono già scontrato con quest'errore e di solito lo da quando la query è vuota o un array è vuoto. In questo caso non ho array all'interno della query e l'errore è sempre il solito
se uso fetch array mi restituisce
PHP:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in

se uso mysql_num_rows

PHP:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in

che poi mysql_num_rows era utilissimo e non ho ancora capito con cosa lo hanno sostituito MAH!

ho effettuato il var_dump della query ed è tutto in ordine
 
BOH

if(mysql_num_rows($res)) $number2=mysql_num_rows($res);

è andato. MISTERO.

ma siamo che siamo in php 5 non ho capito con cosa è stato sostituio mysql_num_rows perchè mi è capitato diverse volte che mi segnalava errore.

ad esempio ho letto enl manuale che nelle prossime versioni mysql_fetch_array verrà deprecato. ed infatti a volte mi da errore sui valori nulli.

prima no.
 
ciao
intanto una cosa ID è una prymary key autoincrement?
se si sarà sempre diversa da vuota.
poi non ho capito bene quel $var che dici che è AND x=y, cosa è x e cosa y? x un nome di un campo)penso di si)? y è un numero o una stringa?
se ID è primarykey e autoncrenment non serve ID != '' perche non sarà mai vuota e quindi nemmeno l'AND
se y è un numero intero può andare bene, se è una stringa deve essere x='y'
per cui
la querystringa dovrebbe essere
PHP:
<?php
//.....
$sqlquery = "SELECT * FROM tabella  WHERE $var";
//qui metti un var dump per verificare la querystringa
var_dump($sqlquery);//e guarda se viene scritta giusta
//poi il resto
$res = mysql_query($sqlquery);
$number2=mysql_num_rows($res);//a che ti serve quell'if?
//se devi verificare che ci siano righe basta
if($number2 == 0){
	//quello che devi fare se non ci sono record cercati
}else{
	//quello che devi fare se ci sono
	if($number2 > 70){
		$nr=70;
	}
}
//....
?>
questo se il mio ragionamento sull'ID e sul x=y sono giusti.
poi come saprai le query mysql sono deprecate da php5, ma non abolite quindi per ora dovrebbero funzionare
comunque conviene guardare (e poi usare) la classe PDO
 
il manuale dice questo
This extension is deprecated as of PHP 5.5.0, and will be removed in the future.
quindi verifica bene che versione della 5 hai
in ogni caso per l'estensione mysqli il sostituto è semplicemente mysqli_num_rows
non dovrai usare mysql_connect ma mysqli_connect
il passagio non è poi cosi traumatico ma è essenziale studiarsi il manuale a riguardo
 
Ultima modifica:
il manuale dice questo

quindi verifica bene che versione della 5 hai
in ogni caso per l'estensione mysqli il sostituto è semplicemente mysqli_num_rows
non dovrai usare mysql_connect ma mysqli_connect
il passagio non è poi cosi traumatico ma è essenziale studiarsi il manuale a riguardo

è insomma

ci ho messo due anni a far su questa specie di software tutto in maniera autodidatta e con i vostri preziosi consigli.

rimettermi daccapo sul PDO o msqli contando che ho quasi 200 file da modificare mi viene male solo al pensiero. sono 4 giorni che modifico dal php 4 al php 5.3

mannaggia

@borgo si le intuizioni sono giuste tranne per l?ID che non è autoincrement ma è primary key.

in realtà none sistono ID vuote però $var in pratica se esiste una variabile diciamo nome: allora $var è uguale a "AND NOME =$nome se none siste è uguale a ''

quindi peor ovviare a quell'AND ho messo ID!='' dopo il WHERE perchè tanto vuota non lo sarà mai.
 
ciao
e perchè non togli l'and falla variabile?

@criric: io ormai... ma tu sei giovane quindi ti auguro che anche le pdo vengano deprevcate ;););)
 
@Borgo
scommetto che quando le pdo saranno deprecate tu sarai qui pronto a rilanciare la programmazione procedurale :fonzie:
 
ciao
e perchè non togli l'and falla variabile?

@criric: io ormai... ma tu sei giovane quindi ti auguro che anche le pdo vengano deprevcate ;););)

bè si volendo solo che poi se la variabile non esiste mi resta il where appeso.

e ci sono più variabili contententi degli and.

io onestamente ho fatto una rpova con pdo su due fiel ed effettivamente mi sembra anche + velcoe da scrivere ma su 2000 file mi viene da piangere. sopratutto per come l'ho costruito, tipo il file con tutte le funzioni di cui con questo cambio ne ho già dovute eliminare due.

Inoltre ho patchato un software tedesco che per entrarci mamma mia che inferno ho passato. ad esempio lì in quasi un anno è sempre filato tutto liscio. Con il cambio mi ha presentato diversi errori quali un
semplice fclose($file) e pensare che aprivo il file in più occasioni ed ho dovuto eliminare tutti gli fclose. praticamente lo script gira tutta la sessione sempre con sti file aperti hihihiihi

magari per chi come voi lo fa di mestiere o lo ha studiato è anche giusto ed intelligente stare al passo ma per chi come me lo fa solo per passione mi vien la pelle d'oca. quando al cambio iniziavano a saltare gli mysql_fetch_array e nel manuale ho letto che nelle successive sarà deprecato sono quasi svenuto buahauhauahu
 
Ultima modifica:
Borgo con pdo puoi lavorare su più dbms, hai uno standard e un concetto di elaborazione della query migliore e in più è anche leggermente più veloce quindi perché rimanere incollato al vecchio mysql, per tradizione :p?
 

Discussioni simili