2011-07-14 4 views
0

J'ai ce morceau de code qui ressemble bien à moi, mais je continue à obtenir l'erreur suivante:

"Parse error: syntax error, unexpected $end in /home/txclanco/public_html/hotmuze/addSong.php on line 21"

Ceci est un script qui prend dans l'entrée d'un formulaire, vérifie les doublons et s'il y a un en double, il ne créera pas de nouvelle ligne mais ajoutera simplement 1 à la ligne 'rating' où le nom de la chanson est la chanson tapée. S'il n'y a pas de doublon, le script ajoutera les données comme une nouvelle ligne. Les types de données sont les suivantes:

  • id = A_i/int
  • songname = varchar
  • artist = varchar
  • note = int

Le script est ci-dessous avec les données de MySQL obturées out:

<? 
    mysql_connect("localhost", "***", "***") or die(mysql_error()); 
    mysql_select_db("***") or die(mysql_error()); 
    $songname = $_POST['songname']; 
    $artist = $_POST['by']; 
    $ratenum = 1; 
    $chkquery = "SELECT * FROM hotmuze WHERE songname='$songname'"; 
    $plusOneQuery = "SELECT * FROM hotmuze WHERE songname='$songname'"; 
    $updateQuery = "UPDATE hotmuze SET rating='$rating2' WHERE songname='$songname'"; 
    $checkdata = mysql_query($chkquery); 
    $checkrows = mysql_num_rows($checkdata); 

    if($checkrows==0) 
    { 
     $insquery = "INSERT INTO hotmuze (id, songname, artist, rating) VALUES('', '$songname', '$artist', '$ratenum'"; 
     $insdata = mysql_query($insquery); 
    } 

    if($checkrows!=0) 
    { 
    $plusData = mysql_query($plusOneQuery); 
    } 

    if(mysql_num_rows($plusData)!=0) 
    { 
    $result = mysql_fetch_assoc($plusData); 
    $rating = $result['ratng']; 
    $rating2 = $rating + 1; 
    mysql_query($updateQuery); 
    echo "Data Inserted"; 
    } 
?> 

Ligne 21 étant:

if($checkrows!=0) 
{ 
    // The brace is on line 21 
    $plusData = mysql_query($plusOneQuery); 
} 

Toutes les idées ce qui pourrait être mal avec le script? Je sais que l'erreur de fin inattendue signifie généralement qu'il n'y a pas d'accolade, mais cette fois, ça va?

+0

Votre erreur actuelle mise à part, votre $ insquery semble être déclaré avec une parenthèse manquante à la fin du SQL. – doppelgreener

+2

Vous avez vraiment besoin de 'mysql_real_escape_string' ces vars avant de les mettre dans la requête :-) – prodigitalson

+0

Votre code analyse juste bien. Avez-vous supprimé l'erreur de syntaxe en supprimant les informations d'identification MySQL? –

Répondre

0

VALEURS ouvrir et fermer '()' est besoin

$insquery = "INSERT INTO hotmuze (id, songname, artist, rating) 
VALUES('', '$songname', '$artist', '$ratenum')"; 
+0

Merci, c'était un problème, et il y en avait d'autres. J'ai refait le script avec une structure différente, et ça marche! :) –

1

changer cette

$insquery = "INSERT INTO hotmuze (id, songname, artist, rating) VALUES('', '$songname', '$artist', '$ratenum'"; 

à

$insquery = "INSERT INTO hotmuze (id, songname, artist, rating) VALUES('', '$songname', '$artist', '$ratenum')"; 

vous avez raté le ) à la fin

+1

si vous avez des erreurs dans les lignes d'exécution de requête. vérifiez la racine de cela. vous trouverez l'erreur effacer. de plus '' $ end end 'inattendu est pour toute fermeture incomplète – jeni

+0

Merci, c'était un problème, et il y en avait d'autres. J'ai refait le script avec une structure différente, et ça marche! :) –

0

Count le nombre o f crochets d'ouverture que vous avez contre le nombre de crochets de fermeture. $ Insquery = "INSERT INTO hotmuze (identifiant, nom de chanson, artiste, note) VALEURS ('', '$ nom de chanson', '$ artiste', '$ ratenum')";

+1

Merci, j'utilise habituellement Notepad ++ pour le faire, mais eh: P L'éditeur Web que j'utilise est horrible :(Ce n'était pas le seul problème en quelque sorte!De toute façon, j'ai refait le code entier dans une structure différente, et ça a marché! Merci quand même! :) c –

Questions connexes