Rolf: Probleme mit Anführungszeichen

Hey.

Ich will ein kleines Skript basteln mit IP Sperre das einerseits zur Analyse meiner Besucher dient und andererseits später auch als Counter verwendet wird.

So siehts aus:
<?php
include('sql.php');
$table='statistik';
$ip=$REMOTE_ADDR;
$browser=$HTTP_USER_AGENT;
$ref=$HTTP_REFERER;
$date=date('d.m.Y');
$query=mysql_query('SELECT id FROM '.$table.' WHERE ip='.$ip) or die (mysql_error());
if(mysql_num_rows($query)>0){
 $this_time=time();
 $querys=mysql_query('SELECT datum,zeit FROM '.$table.' WHERE ip='.$ip) or die (mysql_error());
 $row=mysql_fetch_array($querys) or die (mysql_error());
 if($date=$row['datum']&&$this_time<($row['zeit']+14400)){
   die();
 } else {
 $dummy=mysql_query('INSERT INTO '.$table.' (ip,browser,ref,datum,zeit) VALUES ('.$ip.','.$browser.','.ref.','.$date.','.$this_time) or die (mysql_error());
 }
}
?>

Nur leider bekomme ich immer die Fehlermeldung:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1"
Aber ich weiß nicht wo da der Fehler ist.

Hoffe ihr könnt mir helfen.
Mit freundlichen Grüßen

Euer über alles schätzender Rolf

  1. Hi,

    Nur leider bekomme ich immer die Fehlermeldung:
    "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1"
    Aber ich weiß nicht wo da der Fehler ist.

    wie lauten denn die SQL-Statements, die Du gegen die Datenbank feuerst?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Das ist das ganze Skript:

      <?php
      include('sql.php');
      $table='statistik';
      $ip=$REMOTE_ADDR;
      $browser=$HTTP_USER_AGENT;
      $ref=$HTTP_REFERER;
      $date=date('d.m.Y');
      $query=mysql_query('SELECT id FROM '.$table.' WHERE ip='.$ip) or die (mysql_error());
      if(mysql_num_rows($query)>0){
       $this_time=time();
       $querys=mysql_query('SELECT datum,zeit FROM '.$table.' WHERE ip='.$ip) or die (mysql_error());
       $row=mysql_fetch_array($querys) or die (mysql_error());
       if($date=$row['datum']&&$this_time<($row['zeit']+14400)){
         die();
       } else {
       $dummy=mysql_query('INSERT INTO '.$table.' (ip,browser,ref,datum,zeit) VALUES ('.$ip.','.$browser.','.ref.','.$date.','.$this_time) or die (mysql_error());
       }
      }
      ?>

      1. Hi,

        Das ist das ganze Skript:

        ich habe nicht nach PHP-Code gefragt, sondern nach SQL-Code.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. yo,

    wenn du spalten hast, die vom typ character sind, dann müssen diese auch mit einfachen anführungszeichen eingeschlossen werden, sowohl in der abfrage als auch im insert statement. da du diese aber schon für php benutzt, würde ich vorschlagen, du benutzt doppelte anfürhrungszeichen in php und einfache für die sql anweisung.

    Beispiel:

    $query=mysql_query("SELECT id FROM ".$table." WHERE ip='".$ip."'") or die (mysql_error());

    dass musst du in der insert anweisung auch entsprechend machen.

    Ilja

    1. $query=mysql_query("SELECT id FROM ".$table." WHERE ip='".$ip."'") or die (mysql_error());

      Hey, super danke, das freut mich, so klappts!!!

      mfg

      Rolf