Errore mysql_query

  • Creatore Discussione Creatore Discussione efisio
  • Data di inizio Data di inizio

efisio

Utente Attivo
5 Ago 2008
95
0
0
Buongiorno a tutti,
stò cercando di eseguire una query ma il risultato è sempre lo stesso: query fallita.

potreste darmi un aiuto ad identificare l'errore che sto commettendo?
vi posto la query di seguito:

$result = mysql_query("SELECT email FROM '".$professione."' WHERE nome='"
.$nome."' AND cognome='".$cognome."'");
$ris = mysql_query ($result) or die ("query fallita");

grazie
efisio
 
ciao
guarda che sta facendo due query

prova così

PHP:
$result = "SELECT email FROM '".$professione."' WHERE nome='"
.$nome."' AND cognome='".$cognome."'";
$ris = mysql_query ($result) or die ("query fallita");
 
Buonasera Borgo,
ho provato ad inserire il codice che mi hai postato ma ora mi dà come risultato:
Parse error: syntax error, unexpected '=' in D:\Inetpub\webs\risorseumane\prova\form_contatto.php on line 31

La line 31 corrisponde alla query...
forse mi sfugge qualcosa e mi perdo in un bicchiere d'acqua!
continuo ad andare avanti per prove ed errori.
Grazie
Efisio
 
ciao
questa è nuova, o sono orbo io o mi sembra che non ci siano errori di sintassi
eventualmente prova così

PHP:
$result = "SELECT email FROM '".$professione."' WHERE nome='" 
.$nome."' AND cognome='".$cognome."'"; 
mysql_query ($result) or die ("query fallita");
 
Buongiorno Borgo e grazie ancora per i suggerimenti.

borgo tu non sei affatto orbo, sono io che capisco poco poco di php e continuo a chiedermi dove potrei aver sbagliato.

pensiero a forum aperto:"
forse nel form di invio?".

controllo e vi faccio sapere.
buona domenica.
 
ciao
fai una cosa intanto togli per ora or die ("query fallita") e guarda che errore (WARNING) ti da (e postalo)
poi metti un var_dump sotto la query e verifica che la query sia giusta

PHP:
$result = "SELECT email FROM '".$professione."' WHERE nome='"  
.$nome."' AND cognome='".$cognome."'";
var_dump($result );//da togliere dopo le verifiche
mysql_query ($result);

il var dump dovrebbe restituirti qualcosa del genere
string(nn) "SELECTemail FROM ombrellaio WHERE nome='Pinco' AND cognome='Pallino'"
se invece (ti faccio un esempio) vedi
string(nn) "SELECTemail FROM ombrellaio WHERE nome='' AND cognome='Pallino'"
vuol dire che ka variabile $nome non viene valorizzata, e quindi devi capire il perchè
 
Ciao Borgo,

come pensavi gli errori che mi ha dato sono i seguenti:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Inetpub\webs\risorseumane\prova\form_contatto.php on line 35

Warning: mail() [function.mail]: SMTP server response: 503 5.5.2 Need Rcpt command. in D:\Inetpub\webs\risorseumane\prova\form_contatto.php on line 42

Per la connessione mi dà:Connessione avvenuta con successostring(74) "SELECT email FROM 'musicisti' WHERE nome='silvia' AND cognome='rossi'"
 
Ultima modifica:
ciao
intanto abbiamo visto che la querystringa è giusta, avendo modificato la riga del mysql_query da errore alla mysql_fetch_array
rimetti

$sql=mysql_query ($result); //o quello che vuoi al posto di $sql

e nel mysql_fetch_array

$riga=mysql_fetch_array($sql); //o quello che hai messo prima

per il secondo errore è un errore del server (stai lavorando in locale o remoto?)
se stai lavorando in locale non puoi inviare email, quindi, per forza, errore (quando lavoro in locale la funzione mail() la commento e al suo posto metto un echo o un var_dump per vedere il testo dell'email in prova)
se stai lavorando in remoto devi interpellare i gestori del server
 
ciao Borgo,
mi stò esercitando in remoto.
a proposito delle modifiche effettuate il risultato è il seguente:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Inetpub\webs\risorseumane\prova\form_contatto.php on line 35

per questo errore mi devo rivolgere ad aruba, dove ho comprato lo spazio su ci ho il mio sito, presumo?
Warning: mail() [function.mail]: SMTP server response: 503 5.5.2 Need Rcpt command. in D:\Inetpub\webs\risorseumane\prova\form_contatto.php on line 42

GRAZIE
 
il codice è il seguente:
<?php
include("dbiscritti.php");

//campi hidden
$nome = $_POST['nomea'];
$cognomep = $_POST['cognomea'];
$professione = $_POST['professione'];

//campi form obbligatori
if (isset($_POST['nome'])) $nome = trim($_POST['nome']);
if (isset($_POST['cognome'])) $cognome = trim($_POST['cognome']);
if (isset($_POST['testo'])) $testo = trim($_POST['testo']);
if (isset($_POST['email'])) $email = trim($_POST['email']);

// estraggo da database
$db_conn = @mysql_connect($host,$user,$pass);
mysql_select_db($database, $db_conn);
//verifica dell'avvenuta connessione
if (mysqli_connect_errno()) {
// notifica in caso di errore
echo "Errore in connessione al DBMS: ".mysqli_connect_error();
// interruzione delle esecuzioni i caso di errore
exit();

}
else {
// notifica in caso di connessione attiva
echo "Connessione avvenuta con successo";
}

$result = "SELECT email FROM '".$professione."' WHERE nome='"
.$nome."' AND cognome='".$cognome."'";
var_dump($result );//da togliere dopo le verifiche
$sql=mysql_query ($result);
$riga=mysql_fetch_array($sql);
//inserisco controllo errore
var_dump($riga );
// preparo la mail
$destinatario = $riga['email'];
$oggetto = "informazioni";
$messaggio = $testo;
$mittente = "From: " . $email;
// spedisco
mail($destinatario, $oggetto, $messaggio, $mittente);
mysql_close();
?>

IL CONTROLLO var_damp($riga) mi dà come risultato: bool(false)
significa che non trova info nel campo email o che altro?per info, ho controllato sul db il campo email e contiene un indirizzo email corretto.
aiutatemiiii
 
Ultima modifica:
ciao
intanto togli il silent @ alla riga 16 (lo rimetterai quando tutto è a posto) e guarda se ti da errore (ma credo di no).
poi:
togli mysql_close();
da più fastidio che altro, ci pensa php a chiudere quando serve.
il bool(false) vuol dire che non trova il record
metti un var_dump anche a $sql per vedere se fa la query

PHP:
//..........
$sql=mysql_query ($result);
var_dump($sql );
$riga=mysql_fetch_array($sql);
//inserisco controllo errore
var_dump($riga );
//...............

se ti da anche questo bool(false) vuol dire che non ti fa la query.
adesso iniziamo il ragionamento.
per prima cosa lo script che hai postato mi semmbra sintatticamente corretto, quindi l'errore probabilmente non è nello script
verifica nomi campi e tabelle nel db con quelli che usi in php tenendo presente anche le maiuscole/minuscole (il campo Nome non è == a nome).
analogamente per il contenuto (ricordati che php è case sensitive) quindi rossi != Rossi.
per ovviare a questo (se il difetto è lì) usa nell'inserire i dati immessi nei $_POST la funzione strtoupper o strtolower che trasforma i caratteri in tutti minuscoli o maiuscoli.
così eviti il rpoblema

es.
if (isset($_POST['nome'])) $nome = strtoupper(trim($_POST['nome']));

per cui quando l'utente inserisce o per iscriversi o per leggere i suoi dati è indifferente che scriva as ROssi o rOSSI tanto nel db che nei confronti troverai sempre rossi
 
Buonasera Borgo,
ho effettuato qualche prova, in base a quanto mi hai detto, e ho potuto verificare la select, mysql_query e fetch_arry e tutte rilevano correttamente i dati.
Il problema che mi dà, a questo punto è il seguente:
Parse error: syntax error, unexpected $end in...on line 43

Nela linea 43 si trova i simboli di chiusura del file php: ?>

ti posto l'ultima parte del codice che ho modificato:
...
$result = "SELECT email FROM '".$professione."'"." WHERE nome='".$nomep."' AND "."cognome='".$cognomep."';
var_dump($result );//da togliere dopo le verifiche
$sql=mysql_query($result);
var_dump($sql );
$riga = mysql_fetch_array($sql);
var_dump($riga );
// preparo la mail
$destinatario = $riga;
$oggetto=informazioni;
$messaggio = $testo;
$mittente = $email;
// spedisco
mail ($destinatario, $oggetto, $messaggio, $mittente);
 
...
$result = "SELECT email FROM '".$professione."'"." WHERE nome='".$nomep."' AND "."cognome='".$cognomep."';
...

Mancano le virgolette alla fine:

$result = "SELECT email FROM '".$professione."'"." WHERE nome='".$nomep."' AND "."cognome='".$cognomep."'";
 
Buongiorno Satifal,
la correzione che mi hai suggerito l'ho applicata ma il risultato non cambia, anzi il numero degli errori aumenta:

Connessione avvenuta con successostring(74) "SELECT email FROM 'professionisti' WHERE nome='silvia' AND cognome='rossi'" bool(false)
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Inetpub\webs\risorseumane\prova\form_contatto.php on line 33
bool(false)
Warning: mail() [function.mail]: SMTP server response: 503 5.5.2 Need Rcpt command. in D:\Inetpub\webs\risorseumane\prova\form_contatto.php on line 40 .

mi sembrava di capire, leggendo sul web, che l'errore precedente di solito si ha quando dimentichiamo di mettere una virgoletta, un punto e virgola o quant'altro, ma forse non è così!!
 
ciao
togli gli apici al nome della tabella

...
$result = "SELECT email FROM ".$professione."." WHERE nome='".$nomep."' AND "."cognome='".$cognomep."';
...
anzi meglio scrivila così

$result = "SELECT email FROM $professione WHERE nome='$nomep' AND cognome='$cognomep' ";
 
ciao dimenticavo
ti da errore nella mail() perche non trova l'indirizzo, fino a che non metti a posto la query mail ti darà errore
a parte questo la parte mai() scrivila così
PHP:
//.......
if(mail ($destinatario, $oggetto, $messaggio, $mittente)){
 echo "email inviata correttamente";
}else{
 echo "errore di trasmissione";
}
//....
 
Buongiorno Borgo,

ho eseguito quanto mi hai postato ed è andato tutto a Buon Fine.

Grazie ancora per la gentilezza e cortesia con cui mi hai aiutato a risolvere questo problema, per me irrisolvibile.

Efisio
 

Discussioni simili