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!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
21.08.2009, 13:54:24
|
Junior Member
|
|
Registriert seit: Jun 2003
Beiträge: 186
|
|
NULL-Werte in DB eintragen
Hallo zusammen,
ich hab hier im Forum schon gesucht und auch ein paar Beiträge zu dem Thema gefunden.
Lieder sind es immer varchar()-Spalten in der Datenbank, ich hab int() Spalten.
Bei mir geht es um folgendes.
In einem Formular können ein paar Felder leer sein, in der DB soll dann NULL eingetragen werden.
Datenbank bzw. Spalten so aufgebaut
hoehenmeter smallint(4) standart: NULL (NULL -> ja)
Möchte ich nun die Daten aus dem Formular in die Datenbank schreiben in dem ein int()-Feld leer geblieben ist, so kommt eine SQL-Fehlermeldung:
Notice: Incorrect integer value: '' for column 'hoehenmeter' at row 1
Auch das brachte immer diese Fehlermeldung:
PHP-Code:
if(is_null($_POST['hoehenmeter'])){
$_POST['hoehenmeter'] = NULL;
}
oder
if(empty($_POST['hoehenmeter'])){
$_POST['hoehenmeter'] = NULL;
}
Oder ist es nicht möglich bei Spalten die als int definiert wurden NULL eintragen zu lassen?!
|
21.08.2009, 14:05:07
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
|
|
AW: NULL-Werte in DB eintragen
Soweit ich weiß, schon...!
Aber meinst du wirklich, dass es sinnvol ist das fehlerhafte INSERT Kommando geheim zu halten?
Zitat:
Notice: Incorrect integer value: '' for column 'hoehenmeter' at row 1
|
Ein leerer Sting ist kein gültiger Integer Wert.
Ein leerer Sting ist kein NULL im SQL Sinne.
Warum machst du nicht das, was du tun willst?
|
21.08.2009, 14:22:11
|
Junior Member
|
|
Registriert seit: Jun 2003
Beiträge: 186
|
|
AW: NULL-Werte in DB eintragen
Hi,
nein geheim möchte ich das INSERT-Kommando nicht halten... dazu gibts keinen Grund. ;)
Das ein leerer String kein int-Wert ist, ist mir klar. Darum versuchte ich es auch mit $var = NULL.
hier das gesamte Query:
PHP-Code:
if(is_null($_POST['hoehenmeter'])){
$_POST['hoehenmeter'] = NULL;
}
if(empty($_POST['max_hf'])){
$_POST['max_hf'] = NULL;
}
if(empty($_POST['min_hf'])){
$_POST['min_hf'] = NULL;
}
if(empty($_POST['durchschn_hf'])){
$_POST['durchschn_hf'] = NULL;
}
$result = mysql_query("INSERT INTO laufen_meintraining (user_id, strecken_id, individual_eintrag, individual_strecke, individual_distanz, individual_runde, runden, type_id, datum, laufzeit, details, startuhrzeit,hoehenmeter, wetter, temp, luft, wind, max_hf, min_hf, durch_hf, kcal, bemerkung)
VALUES ('".$_SESSION['user_id']."',
'".$_POST['strecken_id']."',
'".$individual_eintrag."',
'".$_POST['strecken_bezeichnung']."',
'".$distanz."',
'".$runde."',
'".$_POST['runden']."',
'".$_POST['type_id']."',
'".$_POST['jahr']."-".$_POST['monat']."-".$_POST['tag']."',
'".$_POST['std'].":".$_POST['min'].":".$_POST['sec']."',
'".$_POST['details']."',
'".$_POST['start_std'].":".$_POST['start_min']."',
'".$_POST['hoehenmeter']."',
'".$_POST['wetter']."',
'".$_POST['temperatur']."',
'".$_POST['luft']."',
'".$_POST['wind']."',
'".$_POST['max_hf']."',
'".$_POST['min_hf']."',
'".$_POST['durchschn_hf']."',
'".$_POST['kcal']."',
'".$_POST['bemerkung']."' )",$db) or trigger_error(mysql_error($db));
if(!$result){ logfile('sql',error_get_last());}
mysql_close($db);
|
21.08.2009, 14:35:37
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: NULL-Werte in DB eintragen
Du solltest halt kein STRING in ein INT-Feld pressen - lass die ' um $_POST['hoehenmeter'] weg (und auch bei weiteren INT-Feldern).
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
21.08.2009, 14:50:02
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
|
|
AW: NULL-Werte in DB eintragen
Ein PHP NULL ist ganz was anderes als ein SQL NULL.
Einzig die Grundidee des "nichtvorhandenen Wertes" ist vergleichbar.
Da ein SQL Statement immer ein String ist, das PHP NULL allerdings nicht, ist es dir nicht möglich ein PHP NULL in ein SQL Statement einzubauen.
|
21.08.2009, 15:32:55
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: NULL-Werte in DB eintragen
Dein SQL-Statment müsste/könnte da zum Beispiel so aussehen:
PHP-Code:
$sql = "INSERT INTO `test` (`F1`, `F2`, `F3`) VALUES (1, NULL, 'text')";
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
21.08.2009, 15:57:26
|
Junior Member
|
|
Registriert seit: Jun 2003
Beiträge: 186
|
|
AW: NULL-Werte in DB eintragen
So Problem nun gelöst, dank Eurer Hilfe.
@DokuLeseHemmung
Jep, da musse ich mir wirklich wieder im klaren werden um welche Daten es sich handelt und hab auch nochmal im der Refernez kurz nachgelesen.
@vt1810
beim Schreiben fliegen die '' leider schon automatisch rein, auch wenns sich um ein int() handelt.
Da sollte ich doch sorgfältiger sein.
Aber in Summe haben mir beide Antworten letztlich geholfen.
Zum einen definiere ich die $var jetzt nicht als NULL, sondern als String mit "NULL" und übergeb dies dann an das int()-Feld, ohne die ''.
hier für 'hoehenmeter' wie es nun funktioniert.
PHP-Code:
if(empty($_POST['hoehenmeter'])){
$_POST['hoehenmeter'] = "NULL";
}
$result = mysql_query("INSERT INTO hoehenmeter
VALUES ( ".$_POST['hoehenmeter']." )",$db) or trigger_error(mysql_error($db));
if(!$result){ logfile('sql',error_get_last());}
Vielen Dank für den Denkanstoß!!
|
22.08.2009, 01:11:18
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: NULL-Werte in DB eintragen
Pack auf jeden Fall Benutzereingaben in SQL-Queries immer zwischen mysql_real_escape_string(), um SQL-Injections zu verhindern.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
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 16:42:14 Uhr.
|