SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Handbuch der Java-Programmierung

Handbuch der Java-Programmierung zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 21.08.2009, 13:54:24
AlexD AlexD ist offline
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?!
Mit Zitat antworten
  #2  
Alt 21.08.2009, 14:05:07
DokuLeseHemmung DokuLeseHemmung ist offline
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?
Mit Zitat antworten
  #3  
Alt 21.08.2009, 14:22:11
AlexD AlexD ist offline
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); 
Mit Zitat antworten
  #4  
Alt 21.08.2009, 14:35:37
Benutzerbild von vt1816
vt1816 vt1816 ist offline
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!
Mit Zitat antworten
  #5  
Alt 21.08.2009, 14:50:02
DokuLeseHemmung DokuLeseHemmung ist offline
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.
Mit Zitat antworten
  #6  
Alt 21.08.2009, 15:32:55
Benutzerbild von vt1816
vt1816 vt1816 ist offline
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!
Mit Zitat antworten
  #7  
Alt 21.08.2009, 15:57:26
AlexD AlexD ist offline
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ß!!
Mit Zitat antworten
  #8  
Alt 22.08.2009, 01:11:18
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
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.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Vielfacher JOIN für mein Forum VM MySQLi/PDO/(MySQL) 5 25.05.2008 01:10:58
[MySQL] Problem. Wer kann helfen? winbywin MySQLi/PDO/(MySQL) 5 04.06.2007 15:14:46
Datenimport mit ODBC odie MySQLi/PDO/(MySQL) 4 27.11.2006 15:28:18
Datum nur einmal auslesen Soeren PHP Grundlagen 9 02.08.2005 12:50:06
order by punkte ASC Spike15 PHP Grundlagen 9 19.04.2005 18:27:51


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:42:14 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt