Oppure

Loading
04/03/16 1:23
Aangelus
Salve a tutti non riesco ad ottenere una doppia condizione con query funzionante il codice è il seguente
<?php
  if(mysql_num_rows($Trovato =mysql_query("SELECT * FROM ".$Nome." WHERE (AnnoDb = '$DbAnno' and NumCD like '7')  and  (Brani like 'Migliori' and NumeroBrani like '7') ") ) == 0){
             
              echo "Dentro";       
      }else{
          
         echo "fuori"; 
                    }
?>


Con questa query dovrei controllare se un CD con tali parametri esiste. Così come è strutturata questa query da sempre come risultato Dentro
aaa
04/03/16 7:33
TheDarkJuster
Che rdbms? Che errore restituisce pdo?
aaa
04/03/16 11:11
Aangelus
nel browser printa solo Dentro mentre in mysql lanciando la seguente query
SELECT * FROM ".$Nome." WHERE (AnnoDb = '$DbAnno' and NumCD like '7')  and  (Brani like 'Migliori' and NumeroBrani like '7')
mi restituisce 1 riga con le condizioni corrette
aaa
04/03/16 11:13
Roby94
Puoi testare la query direttamente da phpmyadmin se ne hai una versione installata nell'host. Praticamente tutti i servizi di hosting che offrono mySQL o te ne forniscono già una copia installata oppure ti permettono di installarla in autonomia. Nel primo caso prova la tua query direttamente da li per capire se ci sono degli errori logici in essa. La tua ricerca in ogni caso sembra molto scrupolosa, sei sicuro che nel db vi siano elementi che soddisfano le clausole?
Controlla inoltre se $Nome e $DbAnno contengono i valori corretti, prova a stampare a schermo l'intera query string e verifica.
Se si è verificato un errore riportalo, puoi usare mysql_error php.net/manual/en/….
Come ultima cosa, ma l'approccio procedurale non era deprecato nelle librerie mysql? o mi ricordo male?
aaa
04/03/16 11:21
TheDarkJuster
non è l'approccio procedurale ad essere deprecato, è proprio la libreria mysql che è completamente abbandonata a se stessa.

Comunque trovo più semplice fare una stampa dell'errore che installare phpmyadmin.
aaa
04/03/16 11:36
Aangelus
Scusa per non essere stato abbastanza chiaro quando ho scritto che ho lanciato la query in mysql intendevo da myadmin
restituendomi i valori corretti

ho introdotto : echo "Dentro" . mysql_error() ; ma non printa nulla sul browser

modificando la query e passandogli le condizioni singolarmente funzionano entrambe
1)  if(mysql_num_rows($Trovato =mysql_query("SELECT * FROM ".$Nome." WHERE (AnnoDb = '$DbAnno' and IdFilm like '7')  ") ) == 0){
      }

2) if(mysql_num_rows($Trovato =mysql_query("SELECT * FROM ".$Nome." WHERE (Azione like 'Migliori' and IdFilm like '7') ") ) == 0){
}

il problema è quando le unisco
Ultima modifica effettuata da Aangelus 04/03/16 11:37
aaa
04/03/16 11:49
TheDarkJuster
Postato originariamente da Aangelus:

Scusa per non essere stato abbastanza chiaro quando ho scritto che ho lanciato la query in mysql intendevo da myadmin
restituendomi i valori corretti

ho introdotto : echo "Dentro" . mysql_error() ; ma non printa nulla sul browser

modificando la query e passandogli le condizioni singolarmente funzionano entrambe
1)  if(mysql_num_rows($Trovato =mysql_query("SELECT * FROM ".$Nome." WHERE (AnnoDb = '$DbAnno' and IdFilm like '7')  ") ) == 0){
      }

2) if(mysql_num_rows($Trovato =mysql_query("SELECT * FROM ".$Nome." WHERE (Azione like 'Migliori' and IdFilm like '7') ") ) == 0){
}

il problema è quando le unisco


E se usavi phpmyadmin perchè hai scritto del codice PHP?
Perchè hai cercato di inserire codice PHP nell'input box di phpmyadmin?

Io non credo tu stia usando phpmyadmin, e se lo stai usando lo stai sicuramente utilizzando in modo errato.

Comunque prova:
WHERE ((AnnoDb = '$DbAnno') AND (Azione like 'Migliori') AND  (IdFilm like '7'))
aaa
04/03/16 12:11
Aangelus
Nella mia concezione di postare credevo che quando scrivevo codice php era inteso codice scritto per la lettura del browser mentre estrapolando la query dalle doppie virgole era intesa come input per phpmyadmin logicamente cambiano le variabili con i dati che sarebbero passati da php

la query da te suggerita è stata lanciata nel browser printando solo Dentro senza errori
aaa