CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
25.07.2008, 02:02:20
|
|
Member
|
|
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
|
|
Überprüfen ob Eintrag vorhanden
Hallo!
Ich möchte einen neuen Eintrag in eine Tabelle meiner Datenbank machen. Zuvor möchte ich allerdings noch überprüfen ob in einer bestimmten Spalte das gleiche Value, wie für den neuen Eintrag gesetzt ist. Muss ich dafür eine gesonderte Anfrage machen oder gibt es eine Möglichkeit dies in einem Aufwasch zu machen, ähnlich dem erstellen einer neuen Tabelle (IF NOT EXISTS)?
MfG, Andy
|
25.07.2008, 06:12:05
|
Anfänger
|
|
Registriert seit: Apr 2006
Ort: Kolkwitz
Alter: 51
Beiträge: 94
|
|
AW: Überprüfen ob Eintrag vorhanden
Hallo,
ja das kannst Du in einem Schritt machen.
Ich mache es wie folgt:
PHP-Code:
$query="select Nickname FROM login where Nickname='".mysql_escape_string($Nickname)."'";
$result=mysql_query($query);
while ($row = mysql_fetch_object ($result))
{
if($row)
{
die ("<i>Der Nickname ist leider schon vergeben.</i>
<p><a href=\"javascript:history.back()\">Zurück zur Eingabe</a>");
}
}
$query="insert into login (id, Kennwort, Nickname)
values ('','".md5($Kennwort)."','".$Nickname."')";
$ok=mysql_query($query) or die(mysql_error());
Grüße von Sven
|
25.07.2008, 11:27:23
|
|
Member
|
|
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
|
|
AW: Überprüfen ob Eintrag vorhanden
Also doch zwei Queries. Und so würde ich es dann auch nicht machen. Die while-Schleife ist total unnütz.
PHP-Code:
// check if user exists $sql = "SELECT name FROM user WHERE name = `mysql_escape_string($Nickname)`";
// send sql-query $db->query($sql); // check result if($db->affected_rows <= 0) { throw new Exception("Cannot create protected section {$name}."); }
else { // create user $sql = "INSERT INTO `{$table}` SET (`id`, {$fields}) VALUES (``, {$values})";
// check result if( $this->db->affected_rows <= 0 ) { throw new Exception("Cannot create user."); } }
MfG, Andy
//EDIT: Dieser Ausschnitt kommt in einer Methode einer Klasse vor und arbeitet mit MySQLi.
Geändert von Socrates (25.07.2008 um 11:28:38 Uhr)
|
25.07.2008, 14:23:55
|
SELFPHP Profi
|
|
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
|
|
doppelter eintrag
würde es dir helfen, die tab.spalte auf unique zu setzen?
cx
aus dem MYSQL-handbuch:
Zitat:
1.9.6.1. PRIMARY KEY- und UNIQUE-Index-Constraints
Normalerweise tritt ein Fehler auf, wenn Sie versuchen, einen Datensatz mit INSERT bzw. UPDATE einzufügen oder zu aktualisieren, und dadurch eine Unvereinbarkeit bezüglich eines Primärschlüssels, eines eindeutigen Schlüssels oder eines Fremdschlüssels erfolgen würde. Verwenden Sie eine transaktionale Speicher-Engine wie InnoDB, dann macht MySQL die Anweisung automatisch rückgängig. Nutzen Sie hingegen eine nichttransaktionale Speicher-Engine, dann beendet MySQL die Verarbeitung der Anweisung bei dem Datensatz, an dem der Fehler aufgetreten ist, und lässt alle nachfolgenden Datensätze unverändert.
Für den Fall, dass Sie solche Unvereinbarkeiten ignorieren wollen, unterstützt MySQL das Schlüsselwort IGNORE für INSERT und UPDATE. In diesem Fall ignoriert MySQL sämtliche Schlüsselunvereinbarkeiten und fährt mit der Verarbeitung des nächsten Datensatzes fort. Siehe auch Abschnitt 13.2.4, „INSERT“, und Abschnitt 13.2.10, „UPDATE“.
|
cx
Geändert von cortex (25.07.2008 um 14:27:07 Uhr)
Grund: quelle aus MYSQL-handbuch
|
26.07.2008, 15:23:42
|
Anfänger
|
|
Registriert seit: Nov 2007
Beiträge: 27
|
|
AW: Überprüfen ob Eintrag vorhanden
Hallo,
wie wäre es damit?
PHP-Code:
$query= "SELECT Nickname
FROM ".$login."
WHERE Nickname='".mysql_real_escape_string($Nickname)."'";
if(mysql_num_rows(mysql_query($query)) >= 1) // oder: ==1, >0,
{
echo '<i>Der Nickname ist leider schon vergeben.</i>
<p><a href="javascript:history.back()">Zurück zur Eingabe</a>';
}
else
{
$query="INSERT
INTO ".$login."
SET
Kennwort = '".md5($Kennwort)."',
Nickname = '".md5($Nickname)."'";
$ok=mysql_query($query) or die(mysql_error());
}
An 2 Querys kommst Du leider nicht vorbei...
Grüße
Calvados
|
26.07.2008, 15:51:56
|
|
Member
|
|
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
|
|
AW: Überprüfen ob Eintrag vorhanden
Danke aber das ist im Prinzip das was ich in meinem zweiten Beitrag auch geschrieben habe.
MfG, Andy
|
26.07.2008, 17:43:19
|
|
Member
|
|
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
|
|
AW: Überprüfen ob Eintrag vorhanden
Hallo!
Habe es jetzt mit dem Tipp von cortex versucht. Beim erstellen der Tabelle tritt allerdings ein Fehler auf. Kann UNSIGNED nur einmal vergeben werden? Ich erhalte nämlich für folgendes Query einen Fehler.
Code:
CREATE TABLE `permissions` (
`id` TINYINT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 30 ) UNSIGNED NOT NULL ,
`perm` TINYINT UNSIGNED NOT NULL ,
PRIMARY KEY ( `id` )
)
MfG, Andy
|
26.07.2008, 17:55:03
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 16
Beiträge: 2.269
|
|
AW: Überprüfen ob Eintrag vorhanden
Eine vorzeichenlose Zeichenkette?
Du verwechselst da was..
Ich kenn Vorzeichen nur bei Zahlen.
Geändert von DokuLeseHemmung (26.07.2008 um 17:55:50 Uhr)
|
26.07.2008, 18:10:52
|
|
Member
|
|
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
|
|
AW: Überprüfen ob Eintrag vorhanden
Ich bin so blöd. Ok danke.
|
26.07.2008, 18:22:16
|
Anfänger
|
|
Registriert seit: Nov 2007
Beiträge: 27
|
|
AW: Überprüfen ob Eintrag vorhanden
Hallo,
wird das eine Art Mitgliederbereich?
Dann solltest du lieber INT statt TINYINT als ID verwenden.
Es sei denn, dir reichen 255 (unsigned) bzw. 127 Mitglieder.
Grüße
Calvados
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 20:12:27 Uhr.
|