SQL Fehlermeldung - UNIQUE

fixxxxxi

Erfahrenes Mitglied
Hallo,
ich habe eine PHP in welcher ein Gameaccount in die DB eingetragen wird. Da der Eintrag nicht doppelt vorhanden sein darf, habe ich die Spalte auf UNIQUE gesetzt. Nun wird auch kein Wert mehr eingetragen, wenn man einen Wert eintragen will, welcher schon vorhanden ist.

Das Problem ist, das ich keine Meldung bekomme, das der Eintrag doppelt ist, sondern die Seite mit einem Error hängen bleibt - und das mit dem "Query failed!" Das sieht natürlich unschön aus.

Was muss ich da ändern?

PHP:
...ve']) {

	  $type = $_POST['type'];
	  $value = $_POST['value'];
	  $id = $_POST['id'];


		$ergebnis = safe_query("SELECT * FROM ".PREFIX."user_gameacc WHERE userID='$id' AND type='$type' ");
		$num = mysql_num_rows($ergebnis);
		if($num) $error[]="Es ist bereits eine ESE PUID eingetragen!";

		if(!(strlen(trim($value)))) $error[]="Diese ESE PUID ist ungültig!";

		if(is_array($error)) {
			echo'<b>Ein Fehler ist aufgetreten!</b><br><br>';  
			foreach($error as $err) {
				echo'<li>'.$err.'</li>';
			}
			echo'<br><br><input type="button" class="button" onClick="javascript:history.back()" value="Back">';
		}
		else{

		safe_query("INSERT INTO ".PREFIX."user_gameacc SET type='$type', value='$value', userID='$id'");


		echo'Deine ESE PUID wurde eingetragen. Du wirst umgehend weitergeleitet!
	    	          <meta http-equiv="refresh" content="0; URL=index.php?site=myprofile&action=gameaccounts">';
		}
	}
	elseif($_POST['delete_acc']){
	  $type = $_POST['typ...
 
wie zeigen?

Eintragen: safe_query("INSERT INTO ".PREFIX."user_gameacc SET type='$type', value='$value', userID='$id'");

bzw.

Editieren: safe_query("UPDATE ".PREFIX."user_gameacc SET value='$value' WHERE userID='$id' AND gameaccID='$type'");
 
Zuletzt bearbeitet:
in der _settings.php, auf welche die anderen phps aus dem script zugreifen steht folgendes:

PHP:
function safe_query($query="") {
    if(stristr($query, "union")===FALSE){
	if(empty($query)) return false;
	if(DEBUG == "OFF") $result = mysql_query($query) or die('Query failed!');
	else {
		$result = mysql_query($query) or die('Query failed: '
												.'<li>errorno='.mysql_errno()
												.'<li>error='.mysql_error()
												.'<li>query='.$query);
	}
	return $result;
    }
    else {
    die();
    }
}
 
Aber nun erscheint garkeine Fehlermeldung mehr. Nun wird angezeigt, das die ESE PUID erfolgreich eingetragen wurde. Aber es passiert ja nichts, da der Eintrag doppelt ist.

Das Problem ist, das der Nutzer darüber nicht informiert wird, das die ID bereits vergeben ist. Aber eine solche Meldung sollte da erscheinen anstatt dem "Querry Failed".

Kann man das nicht irgendwie so in der Art lösen Also mit einem

if safe_query("INSERT INTO ".PREFIX."user_gameacc SET type='$type', value='$value', userID='$id'");

vor dem Datenbankeintrag und mit dem

elso echo 'Deine ESE PUID ist bereits vergeben';

PHP:
...each($error as $err) {
				echo'<li>'.$err.'</li>';
			}
			echo'<br><br><input type="button" class="button" onClick="javascript:history.back()" value="Back">';
		}
		else{

		if safe_query("INSERT INTO ".PREFIX."user_gameacc SET type='$type', value='$value', userID='$id'");

		echo'Die eingegebene ESE PUID wird bereits von einem anderem TO-Nacht Benutzer verwendet. Du wirst umgehend weitergeleitet!
	    	          <meta http-equiv="refresh" content="2; URL=index.php?site=myprofile&action=gameaccounts">';

elso echo 'Deine ESE PUID ist bereits vergeben';
		}
	}
	elseif($_PO...
 
Zurück