errore su mysql_query

Salve a tutti, sto scrivendo un browser game peròmi sono bloccato perchè se io in una pagina php ho 2 o più mysql_query("SELECT QUERY",$connessione) mi restituisce l'errore:

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource

e nell'array per determinare i risultati questo errore:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

ho controllato decine di volte se la query era scritta correttamente e se esistevano i dati che chiedevo con la query ed è tutto corretto... dove sbaglio?? grazie :D

inviato 9 anni fa
Mr SaJaN
X 0 X

Prova a riportare tutto il codice...

 :bye:

risposto 9 anni fa
Marco Dario
X 0 X

allora, ecco qui il pezzo di codice nel file galassia.php per mostrare il nome del giocatore che possiede un determinato pianeta:

<?php

require_once ("../config.php");

include ('include/galassia.inc.php');

  ViewGalassia(13);

  echo $nome_giocatore;

?>

e qui il codice di include/galassia.inc.php:

<?php

require_once ("../config.php");

function ViewGalassia($pianeta)

{

$galassia = $HTTP_COOKIE_VARS["Galassia"];

$sis_sol = $HTTP_COOKIE_VARS["Sist_Solare"];

$view_galassia = "SELECT * FROM gal". $galassia ." WHERE sis_sol='". $sis_sol ."' && pianeta='$pianeta'";

$query_view_galassia = mysql_query ($view_galassia, $db_gi);

  while($view_galassia = mysql_fetch_array ($query_view_galassia))

  {

    $nome_giocatore = $view_galassia["nome_giocatore"];

  }

}

?>

il cookie Galassia contiene un numero, da 1 a 5 (nel caso dei miei test contiene il 3)

il cookie Sist_Solare contiene un numero, da 1 a 500 (nel caso dei miei test contiene il 340)

perciò la tabella si chiama gal3 ed è composta da 3 campi:

sis_sol -> deve conicidere con la variabile $sis_sol

pianeta -> deve coincidere con il numero tra parentesi quando si richiama la funzione

nome_giocatore -> è il nome del giocatore in quelle determinate coordinate

io devo riuscire ad avere il nome_giocatore dentro la variabile $nome_giocatore e visualizzarlo nel file galassia.php con un echo..

Grazie anticipatamente a chi mi aiuterà :D

risposto 9 anni fa
Mr SaJaN
X 0 X

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource

e nell'array per determinare i risultati questo errore:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

Warning: mysql_db_query(): supplied argument is not a valid MySQL-Link resource

Questo errore si verifica quando le variabili di connessione al database sono errate. Per ovviare a questo errore controlla  che l'user e la password di accesso al database siano corretti.

Per sicurezza fai una prova usa mysql_connect per effettuare la connessione

risposto 9 anni fa
Marco Dario
X 0 X

ma i dati sono corretti, perchè in altre pagine che si connettono allo stesso db non da nessun errore...

questo è il testo del file config.php

<?php

$dbhost = "localhost";

$dbuname = "root";

$dbpass = "";

$dbname = "galaxy_imperator_it_uni1";

    $db_gi = mysql_connect($dbhost, $dbuname, $dbpass, $dbname) or die ("Connessione fallita sul server $dbhost");

   mysql_select_db ($dbname, $db_gi) or die ("Selezione del database fallita su $dbname");

?>

risposto 9 anni fa
Mr SaJaN
X 0 X

ho trovato il problema, ho confrontato i valori restituiti di tutti gli include e require_once e ho trovato che nel file galassia.inc.php il require_once ('../config.php'); non lo leggeva...

il problema ora è che non riesco a farglielo trovare...

la struttura del sito è:

directory principale:

config.php

_ directory gioco:

_ galassia.php

___ directory include:

___ galassia.inc.php

nel file galassia.php se utilizzo require_once ('../config.php); lo legge, ma su galassia.inc.php qualsiasi indirizzo gli metto nel require_once non lo legge... neanche se glielo metto nella directory include e utilizzo require_once ('config.php');

o sto sbagliando a dare il link del file config.php sennò non saprei più dove sbattere la testa...

risposto 9 anni fa
Mr SaJaN
X 0 X

sono riuscito a farglielo leggere, ma il problema persiste... gli errori non spariscono...

risposto 9 anni fa
Mr SaJaN
X 0 X

Stesso errore?

risposto 9 anni fa
Marco Dario
X 0 X

si si...

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\Luca\Programmi\xampp\htdocs\gioco\include\galassia.inc.php on line 15

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Luca\Programmi\xampp\htdocs\gioco\include\galassia.inc.php on line 17

risposto 9 anni fa
Mr SaJaN
X 0 X

Fai una cosa, nel file galassia.inc.php bypassa l'include e scrivi le stringhe di conessione al db direttamente e poi vediamo...

risposto 9 anni fa
Marco Dario
X 0 X

continua a darmi gli stessi errori...

su questo sito all'indirizzo phpnews

ad un certo punto c'è scritto:

Controllare l'esito delle funzioni mysql_connect, mysql_select_db, mysql_query ecc. verificando il valore che restituiscono e confrontandolo con quello atteso. Ad esempio se il valore restituito da mysql_query è false allora la query non è corretta.

Non è che ci sia un errore su com'è scritta la stringa da inviare al db???

ho guardato anche un pò più sotto dove c'è scritto:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

Il messaggio avverte che il parametro passato all'istruzione di fetch o alla mysql_free_result() non è un valido "MySQL result resource", ovvero quella particolare "ricevuta" restituita da mysql_query() in caso di una SELECT eseguita con successo (se n'è discusso nella Lezione 6). Probabilmente quindi stiamo cercando di effettuare un operazione sul set di risultati ma in realtà tali dati non esistono perché la query non ha avuto successo. Oppure, più banalmente, il parametro passato all'istruzione di fetch o alla mysql_free_result() non è il risultato restituito da mysql_query().

Questi errori si verificano quando è stata effettuata una query contenente degli errori. L'istruzione mysql_query ha segnalato il problema restituendo il valore FALSE ma nello script non c'è stato un controllo su tale valore. Lo script pertanto prosegue fino ad arrivare alle istruzioni di fetch che però non possono agire poiché non esiste un set di risultati.

risposto 9 anni fa
Mr SaJaN
X 0 X

Inserisci il controllo con  or die("Query non valida: " . mysql_error());

function ViewGalassia($pianeta)
{
$galassia = $HTTP_COOKIE_VARS["Galassia"];
$sis_sol = $HTTP_COOKIE_VARS["Sist_Solare"];

$view_galassia = "SELECT * FROM gal". $galassia ." WHERE sis_sol='". $sis_sol ."' && pianeta='$pianeta'";
$query_view_galassia = mysql_query ($view_galassia, $db_gi) or die("Query non valida: " . mysql_error());

  while($view_galassia = mysql_fetch_array ($query_view_galassia))
  {
    $nome_giocatore = $view_galassia["nome_giocatore"];
  }
}
risposto 9 anni fa
Marco Dario
X 0 X

ci avevo già provato...

ecco cosa mi viene fuori scritto:

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\Luca\Programmi\xampp\htdocs\gioco\include\galassia.inc.php on line 15

Query non valida:

appunto.... niente -.-

ti anticipo già che sul mio php.ini 'error_reporting'  è impostato a:  E_ALL & ~E_NOTICE

se può aiutarti ho php 5.0.4

risposto 9 anni fa
Mr SaJaN
X 0 X

Bhe, è pacifico che il problema è nella query... quindi prova a fare una cosa del genere.

  • Nel file galassia.inc.php bypassa l'include e scrivi le stringhe di conessione al db direttamente.
  • Elimina le variabili dalla query e scrivi tutto per esteso.
  • Non usare la variabile  $db_gi per connetteri al db nella query.
$dbhost = "localhost";
$dbuname = "root";
$dbpass = "";  #La tua password
$dbname = "galaxy_imperator_it_uni1";

   mysql_connect($dbhost, $dbuname, $dbpass) or die ("Connessione fallita sul server $dbhost");
   mysql_select_db ($dbname) or die ("Selezione del database fallita su $dbname");

function ViewGalassia($pianeta)
{
$galassia = $HTTP_COOKIE_VARS["Galassia"];
$sis_sol = $HTTP_COOKIE_VARS["Sist_Solare"];

$view_galassia = "SELECT * FROM tabella  WHERE sis_sol = 'valore' && pianeta='altrovalore";
$query_view_galassia = mysql_query ($view_galassia) or die("Query non valida: " . mysql_error());

  while($view_galassia = mysql_fetch_array ($query_view_galassia))
  {
    $nome_giocatore = $view_galassia["nome_giocatore"];
  }
}

Controlla bene la sintassi e prova.  O0

risposto 9 anni fa
Marco Dario
X 0 X

non mi viene fuori assolutamente niente... in compenso però non da più errori... il campo ha un valore, non è vuoto...

risposto 9 anni fa
Mr SaJaN
X 0 X

ascolta, facciamo così, domani cambio tutte le strutture delle tabelle, e di conseguenza cambieranno le query...

proverò in quel modo e poi ti farò sapere...

intanto grazie mille per l'aiuto...

ciao e grazie ancora :D

risposto 9 anni fa
Mr SaJaN
X 0 X

Le segnalazioni di errore che finiscono con "supplied argument is not a valid MySQL-Link resource" stanno ad indicare che si è cercato di utilizzare una funzione che agisce sul database ma precedentemente la connessione non è andata a buon fine. Per verificare l'esito della connessione al db procedere nel modo descritto qui:

http://www.phpnews.it/corsi/corso-php-mysql/connessione-mysql-selezione-db/

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

ma è proprio questo il problema... la connessione va a buon fine perchè altre query nella stessa pagina funzionano, ma quelle no -.-

comunque ho risolto cambiando struttura tabella, codice, query e pagine... grazie mille a tutti e due :D

risposto 9 anni fa
Mr SaJaN
X 0 X

beh, ora ne ho un'altro di problema, sempre nelle query:

<?php
   $nuovo_livello = "UPDATE infrastrutture SET $n = '$nuovo_lvl_infrastruttura' WHERE username = '".$_SESSION["user"]."'";
   $nuovo_livello_query = mysql_query ($nuovo_livello, $db_gi);

if ($nuovo_livello_query == FALSE) {
echo "Errore numero:". mysql_errno() ."<br>Descrizione errore:". mysql_error() ."<br>";
} else {
echo "Query OK";
}
?>

probabilmente sbaglio quando scrivo "SET $n = ..." ma le ho provate tutte e non so più cosa inventarmi...

questo è l'errore che restituisce:

Errore numero:1064

Descrizione errore: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 '1 = '3' WHERE username = 'mio_username'' at line 1

però ho visto che prima dell'1 c'è un apice (che penso non debba esserci) e dopo i chiusi apici di mio_username ce né un'altro (e quanche quello penso che non debba esserci)... però io non ne ho messi...

qualcuno sa spiegarmi il perchè di questa cosa?? grazie :D

risposto 9 anni fa
Mr SaJaN
X 0 X

al posto di $n doveva esserci il nome del campo da aggiornare mentre sembra che $n valga 1

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

si, al posto di $n ci dev'essere il campo da aggiornare, ma il campo è 1... anche nel db, perche $n è derivato da un ciclo che lo incrementa, e deve eseguire le stesse operazioni n volte... solo che mi sbaglia quella query :(

risposto 9 anni fa
Mr SaJaN
X 0 X

il campo si chiama "1"? Prova a metterlo tra backtick: `$n`

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Errore numero:1064

Descrizione errore: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 ''1' = '3' WHERE username = 'mr sajan'' at line 1

questo è il nuovo errore...

risposto 9 anni fa
Mr SaJaN
X 0 X

Se il campo si chiama 1 non devi mettere gli apici ma i backtick: `$n` (apici storti)

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda