mysql macht stress

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

mysql macht stress

Beitrag 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
Bitte keine Anfragen mehr per PN
When you get me on my nerven I put you in the Gully and do the Deckel drüf and you never will come back to the Tageslicht.
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag 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
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag 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)
Bitte keine Anfragen mehr per PN
When you get me on my nerven I put you in the Gully and do the Deckel drüf and you never will come back to the Tageslicht.
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag 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
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag von witzigerkiller »

warum misst? ist meine erste classe

der fehler bleibt.
Zuletzt geändert von witzigerkiller am 02.08.2006 22:58, insgesamt 1-mal geändert.
Bitte keine Anfragen mehr per PN
When you get me on my nerven I put you in the Gully and do the Deckel drüf and you never will come back to the Tageslicht.
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag 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;
		}
	}
Zuletzt geändert von fanrpg am 02.08.2006 23:02, insgesamt 1-mal geändert.
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag von witzigerkiller »

der fehler bleibt
Bitte keine Anfragen mehr per PN
When you get me on my nerven I put you in the Gully and do the Deckel drüf and you never will come back to the Tageslicht.
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

Dann ist deine SQL Anweisung fehlerhaft.
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag 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
Zuletzt geändert von witzigerkiller am 02.08.2006 23:08, insgesamt 1-mal geändert.
Bitte keine Anfragen mehr per PN
When you get me on my nerven I put you in the Gully and do the Deckel drüf and you never will come back to the Tageslicht.
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag 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 :(
Antworten

Zurück zu „Coding & Technik“