Seite 1 von 3

mysql macht stress

Verfasst: 02.08.2006 22:02
von witzigerkiller

Code: Alles auswählen

$sql = "SELECT * FROM ".$table_prefix."confirm WHERE ip = '".$_SERVER['REMOTE_ADDR']."'";

if ($db->sql_query($sql) <= 1)
{
  $sql = "INSERT INTO ".$table_prefix."confirm (`ip`, `code`) values ('".$_SERVER['REMOTE_ADDR']."', '".$code."')";

  $db->sql_query($sql);
}
else
{
  $sql = "UPDATE ".$table_prefix."confirm SET code = '".$code."' WHERE ip = '".$_SERVER['REMOTE_ADDR']."'";

  $db->sql_query($sql);
}
Also er führt immer die If anweisung aus...

Was ich machen will:
Wenn er noch nicht in der datenbank ist, soll er eingetragen werden, wenn er schon da ist soll geupdatet werden....

leider macht der mir immer das if...muss da noch ein befehl rein, oder ist etwas von meiner seite falsch?


EDIT: die funktion der classe db sieht so aus:

Code: Alles auswählen

  // Fetch Entrys from Database
  function sql_query($sql)
  {
    if (mysql_query($sql))
    {
      return true;
    }
    else
    {
      die(mysql_error());
    }
  }
Danke

Verfasst: 02.08.2006 22:08
von fanrpg
Wenn kein MySQL Fehler kommt ist sql_query immer true auch wenn kein Datensatz geliefert wird.
Wenn du wissen willst benutze mal...

http://de.php.net/manual/de/function.mysql-num-rows.php

Verfasst: 02.08.2006 22:11
von witzigerkiller
das hatte ich schon versucht...
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Programme\xampp\htdocs\guestbook\add_message.php on line 36

Code: Alles auswählen

if (mysql_num_rows($db->sql_query($sql)) <= 1)

Verfasst: 02.08.2006 22:17
von fanrpg

Code: Alles auswählen

$sql = "SELECT * FROM ".$table_prefix."confirm WHERE ip = '".$_SERVER['REMOTE_ADDR']."'"; 
$result = $db->sql_query($sql);

if ( mysql_num_rows( $result ) <= 1) 
{ 
  $sql = "INSERT INTO ".$table_prefix."confirm (`ip`, `code`) values ('".$_SERVER['REMOTE_ADDR']."', '".$code."')"; 

  $db->sql_query($sql); 
} 
else 
{ 
  $sql = "UPDATE ".$table_prefix."confirm SET code = '".$code."' WHERE ip = '".$_SERVER['REMOTE_ADDR']."'"; 

  $db->sql_query($sql); 
}
Sowieso halte ich deine DB Klasse für den letzten Ober Doppel Riesenmist :D

Verfasst: 02.08.2006 22:55
von witzigerkiller
warum misst? ist meine erste classe

der fehler bleibt.

Verfasst: 02.08.2006 22:58
von fanrpg
Na ja nen einfaches die(mysql_error()) ?

Aus meiner Class von meinem GB:

Code: Alles auswählen

	function sql_query($sql, $nocache = false, $line = false, $file = false)
	{
		$starttime = microtime();
		if( $nocache === true )
		{
			if( !( $result = @mysql_unbuffered_query($sql, $this->db_connect_id) ))
			{
				die('@mysql-Fehler: '.@mysql_error($this->db_connect_id).'<br />Line: '.$line.'<br />File: '.$file);
			}	
		}
		else
		{
			if( !( $result = @mysql_query($sql, $this->db_connect_id) ))
			{
				die('@mysql-Fehler: '.@mysql_error($this->db_connect_id).'<br />Line: '.$line.'<br />File: '.$file);
			}	
		}
		
		$endtime = microtime();
		$completetime = $endtime - $starttime;
		
		if( empty($this->@mysql_time) )
		{
			$this->@mysql_time = $completetime;
		}
		else
		{
			$this->@mysql_time = $this->@mysql_time + $completetime;
		}
		
		if( empty($this->total_querys) )
		{
			$this->total_querys = 1;
		}
		else
		{
			$this->total_querys++;
		}	
		
		if( $result )
		{
			return $result;
		}
		else
		{
			return false;
		}
	}

Verfasst: 02.08.2006 22:59
von witzigerkiller
der fehler bleibt

Verfasst: 02.08.2006 23:03
von fanrpg
Dann ist deine SQL Anweisung fehlerhaft.

Verfasst: 02.08.2006 23:06
von witzigerkiller
witzbold.. das weiß ich auch, aber was?

EDIT:

Code: Alles auswählen

$sql = "SELECT * FROM ".$table_prefix."confirm WHERE `ip` ='".$_SERVER['REMOTE_ADDR']."'"; 
$result = $db->sql_query($sql); 
print_r($sql);
gibt
SELECT * FROM gb_confirm WHERE `ip` ='127.0.0.1'
aus

Verfasst: 02.08.2006 23:08
von fanrpg

Code: Alles auswählen

  // Fetch Entrys from Database 
  function sql_query($sql) 
  { 
    if ($result = mysql_query($sql)) 
    { 
      return $result; 
    } 
    else 
    { 
      die(mysql_error()); 
    } 
  }
Ohne Result kann keiner Leben :(