Torna indietro   Hardware Upgrade Forum > Software > Programmazione

NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
Nelle ultime settimane abbiamo provato tre delle proposte top di gamma di NZXT nelle categorie case, dissipatori e ventole. Rispettivamente, parliamo dell'H9 Flow RGB+, Kraken Elite 420 e F140X. Si tratta, chiaramente, di prodotti di fascia alta che si rivolgono agli utenti DIY che desiderano il massimo per la propria build. Tuttavia, mentre i primi due dispositivi mantengono questa direzione, le ventole purtroppo hanno mostrato qualche tallone d'Achille di troppo
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN è il primo monitor gaming con pannello QD-OLED Gen 5 a layout RGB Stripe Pixel e 360 Hz su 34 pollici: lo abbiamo misurato con sonde colorimetriche e NVIDIA LDAT. Ecco tutti i dati
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Nothing Phone (4a) Pro cambia pelle: l'alluminio unibody sostituisce la trasparenza integrale, portando una solidità inedita. Sotto il cofano troviamo uno Snapdragon 7 Gen 4 che spinge forte, mentre il display è quasi da top dig amma. Con un teleobiettivo 3.5x e la Glyph Matrix evoluta, è la prova di maturità di Carl Pei. C'è qualche compromesso, ma a 499EUR la sostanza hardware e la sua unicità lo rendono un buon "flagship killer" in salsa 2026
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


NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico Recensione Nothing Phone (4a) Pro: finalmente in...
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
EK Waterblock si arrende agli aumenti, i...
Geekbench si aggiorna: tutti i test con ...
Per la prima volta un computer quantisti...
Telecamere Reolink 4K su Amazon: Wi-Fi 6...
Anthropic vuole farsi i chip da sola? Co...
Il fondatore di Framework: il personal c...
JBL Live Flex 3 a 129€ su Amazon: ANC ad...
Come un uomo ha costruito un'azienda da ...
Multe fino a 400 euro anche se hai pagat...
Tapo lancia una valanga di offerte su Am...
Little Snitch su Linux: finalmente dispo...
John Deere accetta un accordo da 99 mili...
Gli astronauti di Artemis II osservano i...
OpenAI lancia ChatGPT Pro da 100 dollari...
Allarme rosso: CPU-Z e HWMonitor, segnal...
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: 21:08.


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