Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Query non valida: ...Cannot add or update a child row.

    Ho creato questo script php per collegarmi ad un database, ma mi da sempre questo errore:

    Query non valida: ...Cannot add or update a child row: a foreign key constraint fails (`musica`.`artista`, CONSTRAINT `Artista_ibfk_1` FOREIGN KEY (`IDGruppo`) REFERENCES `Gruppo` (`IDGruppo`) ON DELETE NO ACTION ON UPDATE CASCADE)

    Il codice è il seguente:

    Codice PHP:
    $nomehost ":/Applications/MAMP/tmp/mysql/mysql.sock";       
     
    $nomeuser "root";    
    $password "root";    
    $db_name "Musica";        
    $n$_POST [nome];    
    $c$_POST [cognome];    
    $u$_POST [username];    
    $p1$_POST [pass];    
    $p2$_POST [confermapassword];    
    $gr$_POST [gruppo];        

    $connessione mysql_connect($nomehost,$nomeuser,$password)                    
    or die(
    "Connessione non riuscita: " mysql_error());

    $dbmysql_select_db($db_name,$connessione)                    
    or die (
    "Impossibile selezionare il database"mysql_error());                

    $time=mktime ($month$_POST [mese], $day$_POST [giorno],$year$_POST [anno]);    
    $query=mysql_query("SELECT COUNT(*) FROM Artista WHERE Username='$u'")        
    or die(
    "query non valida: ".mysql_error());
        
    if (
    $p1!=$p2)        
    {        echo 
    "Password e Conferma Password non sono uguali, riprova.";        }    
    else        {            if (
    $query!=0)            
    {                
    $gruppo=mysql_query("SELECT COUNT(*) FROM Gruppo WHERE Nome='$gr'")                    
    or die(
    "Query non valida: ." mysql_error());       
                          
    if (
    $gruppo==0)                       
    {                        
    mysql_query("INSERT INTO Album (`Nome`, `DataRegistrazione`) Values ($n, time())")                            
    or die(
    "Query non valida: .." mysql_error());                        
    }                
    $gr=mysql_query("SELECT DISTINCT IDGruppo FROM Gruppo WHERE Nome='$gr'")                    
    or die(
    "Query non valida: ".mysql_error());                        

    mysql_query("INSERT INTO Artista (IDArtista, Nome, Cognome, DataNascita, Username, Password, IDGruppo) Values ('NULL','$n','$c','$time','$u','$sp1','$gr')")                    
    or die(
    "Query non valida: ..." mysql_error());                
    $risultato "sei stato registrato";                            
    }            
    else                {                echo 
    "ci sono altri utenti con il tuo username, riprova.";                }        
    }       
     
    mysql_free_result($risultato);        
        
    mysql_close($connessione); 
    Ultima modifica di GiuseppeMinardi; 03-06-2014 a 14:22

  2. #2
    Ci sono CINQUE diverse query nel codice che hai postato, QUALE delle cinque ti dà quell'errore?
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  3. #3
    Scusa, è l'ultima che vedi

  4. #4
    Scusami, è l'ultima, quella dell'Insert IN

  5. #5
    Quell'errore significa che stai cercando di INSERT un artista a cui hai assegnato un id di gruppo che NON esiste nella tabella dei gruppi.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  6. #6
    Ok, grazie, quell parte l'ho risolta, ma adesso mi dice che, alla prima query: Unknown column 'COUNT' in 'field list'

  7. #7
    Controlla di aver scritto COUNT( senza spazi tra count e ( ...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  8. #8
    Ho provato, facendo la query solo in phpmyadmin funziona, se la richiamo con il codice non va

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Prova a scriverla così

    SELECT COUNT(*) AS num_artisti FROM Artista WHERE Username='$u'

    e quindi

    SELECT COUNT(*) AS num_gruppi FROM Gruppo WHERE Nome='$gr'

    Comunque nel codice postato poi questi 2 totali non li usi da nessuna parte, non penserai che quegli if ($query!=0) e if ($gruppo==0) vogliano dire "se count ha restituito un numero diverso da 0..." e "se count ha restituito 0...", vero?
    Perché allo stato attuale vogliono dire "se la query è andata a buon fine..." e "se la query ha fallito..."

    Per leggere il valore trovato devi prima fare il fetch del risultato della query.
    Ultima modifica di Alhazred; 03-06-2014 a 18:38

  10. #10
    Quindi una roba del genere?
    (mysql_fetch_array($query,MYSQL_NUM)!=0

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.