2010-10-22 19 views
2

Je suis assez nouveau pour coder en php et ai rencontré un peu d'un problème qui je pense est très simple. J'essaye de capturer l'adresse IP de n'importe qui qui visite mon site Web et stocke cela dans ma base de données. Le code est le suivant, je ne suis même pas sûr que le code fonctionne, mais je reçois l'erreur Parse erreur suivant: erreur de syntaxe, T_INC inattendue sur la ligne 29 que je vais mettre en évidence dans le code:Si la déclaration ou en boucle échoue sur moi dans php

$ip = $_SERVER['HTTP_CLIENT_IP']; 
       $query="SELECT * FROM ip"; 
       $result = mysql_query($query); 
       $num = mysql_numrows($result); 
       $i = 1; 
       $found=false; 
       while(($i - 1) < $num){ 
        $selection = mysql_query("SELECT ip FROM ip WHERE id=$i"); 
        $tip = mysql_fetch_assoc($selection); 
        if($tip == $ip){ 
         $found = true; 
        } 
       i++; //This is line 29 
       } 
       if($found == false){ 
        $sql = "INSERT INTO `rowley_blog`.`ip` (`ip`) VALUES ('$ip');"; 
        mysql_query($sql); 
        mysql_close(); 
       } 

Répondre

7

Vous avez besoin pour préfixer des variables avec $, donc c'est $i++.

+0

Je savais que ça allait être quelque chose de vraiment simple et stupide merci! – SamRowley

+0

@SamRowley: si vous utilisez un IDE ou un éditeur de code qui met en évidence votre code, des fautes de frappe comme celles-ci pourraient facilement être évitées. Je recommande netbeans.org (leur version de PHP). – chelmertz

2

Il devrait être ceci:

$i++; 
1

Vous devez mettre un signe de dollar avant toutes vos variables - qui devrait être

$i++; 
1

En dehors de l'erreur de syntaxe: Ce code semble-up soufflé pour moi. Ne pas faire la même chose:

$ip = $_SERVER['HTTP_CLIENT_IP']; 
mysql_query("REPLACE INTO `ip` (`ip`) VALUES ('" . mysql_real_escape_string($ip) . "')"); 

Rappelez-vous: un bon code est un code court;)

De plus: Si vous commencez uniquement au code PHP, s'il vous plaît ne commencez même pas utiliser l'extension mysql_. Je préférais utiliser PDO:

$ip = $_SERVER['HTTP_CLIENT_IP']; 
$db->query("REPLACE INTO `ip` (`ip`) VALUES ('" .$db->quote($ip) . "')");