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
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

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
