2011-01-06 8 views
0

Ich erhalte eine Fehlermeldung in meiner PHP-Abfrage.Fehler in meiner PHP-Abfrage erhalten

Fehler wird angezeigt: Sie haben einen Fehler in Ihrer SQL-Syntax; Sie in die Bedienungsanleitung zu Ihrer MySQL-Server-Version für die richtige Syntax entspricht in der Nähe von '1294251744' zu verwenden, '127.0.0.1', '/ Register')‘in Zeile 2

mein Code:

<?php 
require_once("includes/database.php"); 

//Set timeout to 5 minutes 
$timeoutseconds = 300 ; 

//get the time 
$timestamp = time(); 
//Delete all users that are no online after the time out allowed 
$timeout = $timestamp - $timeoutseconds ; 

// stores users IP addresss 
$user_ip = $_SERVER['REMOTE_ADDR']; 
// Automatically collects the hostname or domain like example.com) 
$host = $_SERVER['HTTP_HOST']; 
$host_upper = strtoupper($host); 
$path = rtrim(dirname($_SERVER['PHP_SELF']), '/'); 

//insert the values 
$sql = "INSERT INTO totalonline(timestamp, ip, file) 
      VALUES (''$timestamp','$user_ip','$path')"; 

    $result = mysql_query($sql, $conndb) or die(mysql_error()); 


//delete values when they leave 
mysql_query("DELETE FROM totalonline WHERE timestamp < $timeout"); 

//grab the results 
$sql = "SELECT DISTINCT ip FROM totalonline WHERE file='$path' "; 

    $result = mysql_query($sql, $conndb) or die(mysql_error()); 

//number of rows = the number of people online 
    $user = mysql_num_rows($result); 


//spit out the results 

if($user == 1) { 
echo "$user User online"; 
} else { 
echo "$user User online"; 
} 

?> 
+0

// setzen Sie die Werte $ sql = "INSERT INTO totalonline (Zeitstempel, ip, Datei) VALUES ('' $ Zeitstempel‘, '$ user_ip', '$ path')"; Es gibt ein zusätzliches Zitat vor dem Zeitstempel. – fiunchinho

+0

"Ich bekomme eine Fehlermeldung in meiner PHP-Abfrage.", Ok. Möchtest du mehr Informationen darüber teilen oder sollten wir nur dafür weinen? In 3, 2, 1 ... – Shoe

+0

markiere ich seinen Hintergrund, Antworten und Fragen und es ist erstaunlich, wie sehr die Leute ihn hassen. Also habe ich diese Frage markiert. – Shoe

Antwort

3

ändern Sie dies:

//insert the values 
$sql = "INSERT INTO totalonline(timestamp, ip, file) 
      VALUES (''$timestamp','$user_ip','$path')"; 

dazu:

//insert the values 
$sql = "INSERT INTO totalonline(timestamp, ip, file) 
      VALUES ('$timestamp','$user_ip','$path')"; 

Sie haben zwei einfache Anführungszeichen statt einer.


Auch nahe dem Ende, möchten Sie wahrscheinlich, dies ändern:

if($user == 1) { 
echo "$user User online"; 
} else { 
echo "$user User online"; 
} 

dazu:

if($user == 1) { 
echo "$user User online"; 
} else { 
echo "$user User offline"; 
} 
1

Sie doppelte 'Feld der Werte haben;)

//insert the values 
$sql = "INSERT INTO totalonline(timestamp, ip, file) 
      VALUES (''$timestamp','$user_ip','$path')"; 

Kurz vor $ timestamp.

Es ist besser

//insert the values 
$sql = 'INSERT INTO totalonline(timestamp, ip, file) 
      VALUES ('.$timestamp.',"'.$user_ip."',"'.$path.'")'; 

zu tun, weil auf diese Weise Sie sicherstellen, dass die db ip und Pfad versteht Strings sind.