PHP leere Werte in Datenbank nicht speichern

Benutzer7

Cadet 2nd Year
Registriert
Juli 2011
Beiträge
21
Ich will keine leere Werte in Datenbank speichern.

PHP:
<?php
$eintrag = "INSERT INTO Tabellenname
(name, beschreibung)
VALUES
('$wert1', '$wert2)";

$eintragen = mysql_query($eintrag);
?>

Wie mache ich das?
 
Hi,

ich verstehe dein Problem nicht. Prüf' doch einfach ob ein Wert leer ist und wenn ja dann lass ihn weg? Wo ist denn dein Problem?

VG,
Mad
 
mach ne if schleife drüber:

if (!empty($wert1) && !empty($wert2))
{
$eintrag = "INSERT INTO Tabellenname
(name, beschreibung)
VALUES
('$wert1', '$wert2)";

$eintragen = mysql_query($eintrag);
}

Damit werden die Daten (wert1 & wert2) nur in die Datenbank geschrieben, wenn diese auch wirklich einen Wert haben.
 
if-Abfrage darum basteln?

PHP:
<?php 
if (!empty($wert1) && !empty($wert2)) {
   $eintrag = "INSERT INTO Tabellenname 
   (name, beschreibung) 
   VALUES 
   ('$wert1', '$wert2)"; 

   $eintragen = mysql_query($eintrag); 
} else {
   // Ausgabe leerer String blabla
}
?>
 
Mein Kode:

PHP:
<?php 
if (!empty(".wort().") && !empty(".trim(preg_replace("/[-]{2,}/","-",preg_replace("/($suchstr|\.)/","",str_replace(" ","-",strtolower($str)))), "-").")) {
   $eintrag = "INSERT INTO Tabellenname 
   (name, beschreibung) 
   VALUES
('".wort()."', '".trim(preg_replace("/[-]{2,}/","-",preg_replace("/($suchstr|\.)/","",str_replace(" ","-",strtolower($str)))), "-")."')";

   $eintragen = mysql_query($eintrag); 
} else {
   // Ausgabe leerer String blabla
}
?>

Fehlermeldung:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting T_STRING or T_VARIABLE or '$'
 
Oder willst du einfach NULL speichern wenn ein Wert leer ist`? Dann machst du am einfachsten eine Hilfsfunktion a la:

PHP:
<?php

function saveValueToDb($value) {
 if(strlen($value) == 0)
  return "'" . mysql_real_escape_string(strip_tags($value)) . "'";
 else
  return "NULL";
}

Und dann kannst du dein Query folgendermassen schreiben:

PHP:
<?php 
$eintrag = "INSERT INTO Tabellenname 
(name, beschreibung) 
VALUES 
(".saveValueToDb($wert1).", ".saveValueToDb($wert2).")"; 

$eintragen = mysql_query($eintrag); 
?>
 
Zuletzt bearbeitet:
Mit dem empty befehl kannst du nur nachsehn, ob eine variable einen wert enthält.
Dein Code in der If schleife sagt mir gar nichts....sieht aber nicht so aus als würdest du mit dem empty befehl variablen abfragen ob diese werte enhalten....oder doch? O.O
 
Aus Konsistenzgründen solltest du das aber auf jeden Fall in der Datenbank nochmals prüfen. Also != Null und minlength > 0
 
Prototypp schrieb:
Mit dem empty befehl kannst du nur nachsehn, ob eine variable einen wert enthält.
Dein Code in der If schleife sagt mir gar nichts....sieht aber nicht so aus als würdest du mit dem empty befehl variablen abfragen ob diese werte enhalten....oder doch? O.O

Ja, ich will mit dem empty befehl variablen abfragen, ob diese werte enhalten oder nicht.
Wenn keine werte enhalten sind, dann nichts in DB speichern.
Ergänzung ()

Warum kommt Fehler?

Habt Ihr keine Ideen?
 
Zuletzt bearbeitet:
@TiME-SPLiNTER: von !empty() rate ich ganz schwer ab. die funktion tut nicht das was du hier erwartest. so ist empty("0") === true !!
@Benutzer7: Es fehlt ein ' bei wert2. Du solltest SQL-Abfragen aber NIEMALS über Text einsetzen machen -> SQL Injection und sonstige Fehler möglich!
 
Was soll ich den jetzt machen?
 
Zuletzt bearbeitet:
@IceMatrix: der Befehl !empty() macht genau das was er möchte...

Beispiel:
Ich hab hier eine Variable $variable = 5. Die variable hat also den Wert 5.
Also ist empty($variable) false, weil die variable einen Wert hat.
Nehm ich aber !empty($variable), ist dies true wegen dem ! vor dem empty befehl.

In eine If Abfrage eingebaut macht dieser Befehl also genau das was er möchte. Denn die Anweisungen in der If Abfrage werden nur ausgeführt, wenn die werte in der If Bedingung true sind.

Man könnte das ganze aber auch anders machen....nur zur Verdeutlichung:

Die beiden If Abfragen machen genau das selbe...nur sind die Bedingungen anders ausgedrückt.

If ((empty($variable1) == false) && (empty($variable2) == false))
{
Dann führe aus
}

If (!empty($variable1) && !empty($variable2))
{
Dann führe aus
}

EDIT:

Benutzer7, versuch diese komischen Gebilde, die du in die !empty() klammer rein packst einer variable zuzuweisen und pack dann die Variable stattdessen in die Klammer rein.
 
Zuletzt bearbeitet:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting T_STRING or T_VARIABLE or '$' in dieser Zeile:

PHP:
if (!empty('".wort()."') && !empty('".trim(preg_replace("/[-]{2,}/","-",preg_replace("/($suchstr|\.)/","",str_replace(" ","-",strtolower($str)))), "-")."')) {

Was soll ich machen?
 
Benutzer7, dieser Fehler kommt, weil du in der !empty Klammer keine Variable reinschreibst.

Bei dir steht in der ersten !empty() Klammer '".wort()."', das sieht also so aus: !empty('".wort()."').
Dieses '".wort()."' ist aber keine PHP Variable, eine PHP Variable wird mit einem Dollar ($) Zeichen eingeleitet und dann den Namen der Variable. Das sieht z.b. so aus: $variable.

Desshalb auch die Fehlermeldung:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting T_STRING or T_VARIABLE or '$' in dieser Zeile:

Die Fehlermeldung sagt dir, dass du einen String da rein geschrieben hast. Die !empty() Funktion funktioniert aber nur mit Variablen. Desshalb steht weiters in der Fehlermeldung das Fette Unterstrichene, dass ein $ erwartet wird.

Wie gesagt, versuch das Zeug mal in 2 Variablen zu Speichern und diese dann in die !empty() Funktion schreiben.
 
...um zu prüfen ob eine Variable leer ist...
PHP:
if(!$wert) {
die();
//oder was auch immer.
}else{
echo "überraschung";
//bzw.
echo $wert;
}

Oder umgekehrt ob was drin ist...wie man halt möchte...
 
Prototypp schrieb:
@IceMatrix: der Befehl !empty() macht genau das was er möchte...

Tut es eben nicht!

Beispiel: $wert1 = '0'; <-- das ist eine nicht leere Zeichenkette!
empty($wert1) ist dann true! d.h. bei

if (!empty($wert1)) {
... insert
}

wird dieser Wert eben _nicht_ eingefügt, obwohl er es sollte!

ACHTUNG: Die PHP-Funktion empty() tut nicht das was man allgemein erwarten würde! Insbesondere sagt sie nicht ob ein String leer ist oder nicht!
Ich sehe diesen Fehler sehr häufig!
 
Zuletzt bearbeitet:
@IceMatrix

Hab das grad getestet, hast wohl recht. Dann sry für die falsche Info.

Aber für diesen Fall könnte man die If Abfrage auch anpassen:

If ((!empty($var1) || $var1 == '0') && (!empty($var2) || $var2 == '0'))
....dann ist auch dieser Fall abgedeckt
 
Wie kann ich das Zeug in 2 Variablen speichern und diese dann in die !empty() Funktion schreiben?
 
@Prototypp: das kannst du auch alles im PHP manual nachlesen. empty() ist ein relikt aus alten tagen und verleitet zu unsauberem programmieren. man sollte es nicht verwenden.
 
Das Gequatsche hilft @Benutzer7 absolut nicht weiter, wenn Ihr euch über Relikte unterhalten wollt dann macht einen Thread im Treffpunkt auf.

@ice...ist jetzt nicht böse gemeint aber, in fast jedem Thread biegst du das Thema um, und meistens hilft es den TEs absolut nicht weiter, weil dann paar Leute eine private Plauderei drauß machen, von wegen wie hier jetzt, Relikte, dies so, das nicht so, ne! doch lieber so. Der TE mit seinem Problem interessiert euch doch schon lange nicht mehr.
Ergänzung ()

@Benutzer7
Hast du das jetzt geregelt bekommen?
 
Zurück
Oben