Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-10-2010, 14:34   #1
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
[PHP][Mysql]La query non dà risultati anche se li ha

Salve!
Ho un problemino nell'eseguire una query. La faccenda è curiosa perchè se eseguo la query su phpmyadmin essa da un risultato mentre con il mio script php no.
Dunque la query è la seguente, ma credo che il problema sia da ricercare nella mia classe: SELECT * FROM cms_user WHERE username="super administrator" AND password="<codice hash, o come diamine si chiama>".
La classe:
Codice:
<?php

$mysqli;

class Database {

	//impostazioni 
	private $nomeutente = "root";
	private $password = "";
	private $host = "127.0.0.1";
	private $database = "mattyfog_cms";
	private $prefisso = "cms_";
	private $mysqli;
	//fine impostazioni
	
	public function Connetti() {
		
		$this->mysqli = new mysqli($this->host, $this->nomeutente, $this->password, $this->database);

		if (mysqli_connect_errno())
		{
			$this->mysqli = new mysqli($this->host, $this->nomeutente, $this->password, $this->database);
			
			if (mysqli_connect_errno())
			{
				echo "Errore durante la connessione al DBMS: ".mysqli_connect_error();
				exit();
			}
		}
	}
	
	public function Chiudi() {
		$this->mysqli->close();
	}

	public function Query($query) {
		
/*i vari echo sono stati inseriti per effettuare dei test, ad ogni modo viene stampato il testo '$result è diverso da null'*/
		$result = $this->mysqli->query($query);
		
		echo '$this->mysqli->affected_rows:'.$this->mysqli->affected_rows;
		
		if($this->mysqli->affected_rows > 0) {		
			echo'$result è diverso da null';
			return $result->fetch_array(MYSQLI_BOTH);
		}
		
		else {
			echo'$result è uguale a null';
			return null;
		}
	}[
}
?>
Grazie!
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2010, 18:31   #2
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Ragas sto impazzendo! Ci dev'essere dietro la classica svista...
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2010, 22:52   #3
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Ciao, da questo
Codice:
$result->fetch_array(MYSQLI_BOTH);
Cosa ti aspetti di ottenere?
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 12:49   #4
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Un array contente i risultati e che ha per indici sia i numeri dei campi sia il nome del campi?
Con altre query funziona perfettamente, solo una query non funziona, ma ripeto tale query che non dà risultati con la mia classe, in phpmyadmin funziona e sono sicuro che la query che passo alla classe non contenga errori e che sia la stessa che ho inserito in phpmyadmin.
In ogni caso quando eseguo la quey con cui ho il problema la mia classa ritorna sempre null. La query è: SELECT * FROM cms_user WHERE username="nomeutente" AND password="5f4dcc3b5aa765d61d8327deb882cf99" , ma ripeto su phpmyadmin essa ha dei risultati.
Perchè non va?

Ultima modifica di Mattyfog : 02-11-2010 alle 12:56.
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 17:36   #5
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Ti torna solo un record se lo usi così, e non credo sia quello che tu voglia visto che è alquanto inutile.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 19:53   #6
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Ti riferisci alla query o alla classe?
Se è la query: la query deve ritornare solo un record.
Se è la classe: perchè dovrebbe tornarmi solo un record? non dovrebbe ritornarmi l'array di record? come risolvo?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 20:17   #7
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Ti riferisci alla query o alla classe?
Se è la query: la query deve ritornare solo un record.
Se è la classe: perchè dovrebbe tornarmi solo un record? non dovrebbe ritornarmi l'array di record? come risolvo?
Alla funzione che hai fatto.
Ti torna solo il primo record della query, perché $result lo devi ciclare per prendere tutti i record:
Codice:
while($row=$result->fetch_array()){
	//usi $row che rappresenta solo un record
}
In questo modo ottieni tutti record interessati, e per ogni record tiri fuori una array per i campi.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 20:35   #8
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Quindi restituisce l'array da ciclare, cosa ho detto di sbagliato?
Però il problema, non so se l'ho detto sopra è un altro:
Codice:
public function Query($query) {
		
/*i vari echo sono stati inseriti per effettuare dei test, ad ogni modo viene stampato il testo '$result è diverso da null'*/
		$result = $this->mysqli->query($query);
		
		echo '$this->mysqli->affected_rows:'.$this->mysqli->affected_rows;
		
		if($this->mysqli->affected_rows > 0)  questa condizione non si verifica perchè mysqli->affected_rows risulta uguale a -1{		
			echo'$result è diverso da null';
			return $result->fetch_array(MYSQLI_BOTH);
		}
		
		else {
			echo'$result è uguale a null';
			return null;
		}
	}[
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 20:36   #9
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Quindi restituisce l'array da ciclare, cosa ho detto di sbagliato?
Però il problema, non so se l'ho detto sopra è un altro:
Codice:
public function Query($query) {
		
/*i vari echo sono stati inseriti per effettuare dei test, ad ogni modo viene stampato il testo '$result è diverso da null'*/
		$result = $this->mysqli->query($query);
		
		echo '$this->mysqli->affected_rows:'.$this->mysqli->affected_rows;
		
		if($this->mysqli->affected_rows > 0)  questa condizione non si verifica perchè mysqli->affected_rows risulta uguale a -1{		
			echo'$result è diverso da null';
			return $result->fetch_array(MYSQLI_BOTH);
		}
		
		else {
			echo'$result è uguale a null';
			return null;
		}
	}[
NO!, Ti torna il primo record se fai così, controlla bene.

Si il problema è un altro, ma in tanto risolvi anche quello, per l'altro problema non saprei cosa dirti, dici che la query funziona su phpmyadmin, ma nel tuo progetto no, ora le query che fai pensi siano identiche ma in realtà son diverese, o magari non ti stai connettendo allo stesso db, o tanto altro che mi è difficile verificare da qui
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 20:38   #10
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Ma il punto è che this->mysqli->affected_rows è uguale a -1 anche se ci dovrebbero essere risultati.
Comunque $result->fetch_array(MYSQLI_BOTH) l'ho trattato come un array senza problemi.
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 20:40   #11
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Ma il punto è che this->mysqli->affected_rows è uguale a -1 anche se ci dovrebbero essere risultati.
Comunque $result->fetch_array(MYSQLI_BOTH) l'ho trattato come un array senza problemi.
E' un array, ma quell'array contiene dei campi, i campi del tuo db, ma relativi al primo record che ottieni dalla query.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 20:41   #12
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Ok grazie capito! Controllerò!
Però ripeto il problema non è quello! Il problema è che non sono soddisfatte le condizioni del primo null anche se dovrebbero! Perchè $result è uguale a -1!
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 20:42   #13
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Ok grazie capito! Controllerò!
Però ripeto il problema non è quello! Il problema è che non sono soddisfatte le condizioni del primo null anche se dovrebbero! Perchè $result è uguale a -1!
Fai una cosa, fai un echo della query che gli passi, così vediamo com'è in realtà.

Altre query hai detto che invece funzionano vero?
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 20:44   #14
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Altre query funzionano e il metodo dell'echo l'ho già usato. La query che mi ha stampato l'echo ho provato ad eseguirla su phpmyadmin e dà risultati.
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 20:44   #15
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Incollala qui pari pari.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 20:50   #16
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Aspetta! Forse sono sparite delle virgolette che orima c'erano! Mmmm ora controllo che stupidaggine ho fatto.
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 20:54   #17
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Noooooo! Non ci credo! Quando avevo corretto il codice avevo corretto quello che stampava l'echo e non quello che creava la query. Questo mi ha insegnato che la prossima volta prima salvo la query in una variabile poi stampo la variabile, non con cose come queste:
Codice:
echo 'SELECT * FROM cms_user WHERE username="'.$_POST['username'].'" AND password="'.md5($_POST['password']).'"';
		$user_temp = $database->Query('SELECT * FROM cms_user WHERE username="'.$_POST['username'].'" AND password="'.md5($_POST['password']).'"');
Beh almeno è risolto
E in più ho scoperto l'errore che restituisce solo un record.
Senti, non c'è un modo per far si che la query restituisca tutti i record senza usare cicli ma che salvi tutto in un bell'array?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 21:05   #18
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Vedi mistero risolto

No non c'è, sia fetch_array che fetch_object ti tornano qualocosa di relativo ad un solo record alla volta, ti consiglio comunque di ritornare direttamente $result dalla tua funzione e poi fare il fetch fuori.

Fai una cosa del genere ad esempio:

Codice:
public function Query($query) {
	return $this->mysqli->query($query);
}
Altro consiglio è di utilizzare una classettina che fa già quello che stai cercando di fare: PDO
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 21:14   #19
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Naa voglio usare la mia di classe, così fatico di più anche se mi sa che soprattutto all'inizio perderò in sicurezza
Comunque credo che genererò un array e farò ritornare quello, performance totali permettendo ovviamente.
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 21:18   #20
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Naa voglio usare la mia di classe, così fatico di più anche se mi sa che soprattutto all'inizio perderò in sicurezza
Comunque credo che genererò un array e farò ritornare quello, performance totali permettendo ovviamente.
Non ha senso perchè devi cicliare due volte l'intero risultato della query, una volta per creare l'array e una per usare l'array. Considera che di solito un databse si usa per contenere molti dati, pensa se devi applicare il tuo metodo ad una query che ti torna 100000 record(per dire)

Non capisco perchè non vuoi usare il fetch come si dovrebbe... ed è anche molto più comodo di come vorresti fare tu.
MEMon è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
SpaceX ritirerà ''a breve'' il Fa...
La Luna ha un nuovo cratere di grandi di...
ROG Cronox: ASUS alza l'asticella dei ca...
Lenovo annuncia nuovi sistemi per la vir...
M6 e M5 Ultra, i primi benchmark conferm...
La nuova falla della cybersecurity &egra...
The Blood of Dawnwalker, il sequel potre...
Colpiti i data center Amazon: irrecupera...
Google Wallet, nuova interfaccia in arri...
iPhone Duo, problemi di produzione per i...
Firefox diventa più veloce con PDF e JPE...
WhatsApp, arriva su iOS la nuova scorcia...
Snap presenta Specs: realtà aumentata, c...
SteamOS verso un cambiamento epocale: ar...
Recensione HUAWEI FreeBuds Neo, piccoli ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:01.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v