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

SELFPHP


Professional CronJob-Service

Suche



iOS DevCon 2013



Software Architecture Summit 2013


Deine Leidenschaft ist die Unterwasserfoto-grafie?


Dann ist Qozido genau das Richtige für Dich!

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler ist da!

www.qozido.de

 

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 ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign 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 > MySQL

MySQL Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQL diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 10.01.2011, 13:15:48
iamgodx iamgodx ist offline
Anfänger
 
Registriert seit: Aug 2007
Beiträge: 20
iamgodx befindet sich auf einem aufstrebenden Ast
NOT NULL erzeugt keinen Error

Hallo zusammen.
Ich habe auf einem Ubuntu ein MySQL Server.
Das Problem ist das es bei Feldern die Mit NOT NULL definiert sind, keinen Fehler ausgiebt sondern nur eine Warnung wenn sie NULL sind.

Version:
Code:
mysql> SELECT VERSION();
+-------------------+
| VERSION()         |
+-------------------+
| 5.1.49-1ubuntu8.1 |
+-------------------+
Definition Tabelle:
Code:
mysql> DESC proftpd_users;
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| userid    | int(11)     | NO   | PRI | NULL    | auto_increment |
| groupidfs | int(5)      | YES  |     | 0       |                |
| username  | varchar(50) | NO   | UNI | NULL    |                |
| password  | varchar(50) | NO   |     | NULL    |                |
| homedir   | varchar(50) | NO   | UNI | NULL    |                |
| shell     | varchar(50) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+
Eintrag:
Code:
mysql> INSERT INTO proftpd_users (username) VALUES ("Benutzer");
Query OK, 1 row affected, 2 warnings (0.01 sec)
Warnungen:
Code:
mysql> SHOW WARNINGS;
+---------+------+-----------------------------------------------+
| Level   | Code | Message                                       |
+---------+------+-----------------------------------------------+
| Warning | 1364 | Field 'password' doesn't have a default value |
| Warning | 1364 | Field 'homedir' doesn't have a default value  |
+---------+------+-----------------------------------------------+
Eintrag in der Tabelle:
Code:
mysql> SELECT * FROM proftpd_users;
+--------+-----------+----------+----------+---------+-------+
| userid | groupidfs | username | password | homedir | shell |
+--------+-----------+----------+----------+---------+-------+
|      1 |         0 | Benutzer |          |         | NULL  |
+--------+-----------+----------+----------+---------+-------+
Wie kann ich verhindern dass der Eintrag gemacht wird und stattdessen ein Error erzeugt wird und nicht blos eine Warnung?
Mit Zitat antworten
  #2  
Alt 10.01.2011, 13:21:35
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 3
Beiträge: 395
thomas_w befindet sich auf einem aufstrebenden Ast
AW: NOT NULL erzeugt keinen Error

Kannst Du zusätzlich noch

Code:
mysql> SHOW CREATE TABLE proftpd_users;
zeigen?

Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
Mit Zitat antworten
  #3  
Alt 10.01.2011, 13:33:03
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 3
Beiträge: 395
thomas_w befindet sich auf einem aufstrebenden Ast
AW: NOT NULL erzeugt keinen Error

Stimmt, eine blöde Reaktion von MySQL...

Wenn Du in Deinen INSERT Befehl alle relevanten Spalten (alle NOT NULL) Spalten auflistest, bekommt Du den ERROR 1048 (23000): Column 'xyz' cannot be null

Also in etwa so

Code:
mysql> INSERT INTO proftpd_users (username, passwort, homedir) 
VALUES ("Benutzer", NULL, NULL);
Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
Mit Zitat antworten
  #4  
Alt 10.01.2011, 14:22:12
iamgodx iamgodx ist offline
Anfänger
 
Registriert seit: Aug 2007
Beiträge: 20
iamgodx befindet sich auf einem aufstrebenden Ast
AW: NOT NULL erzeugt keinen Error

Code:
mysql> SHOW CREATE TABLE proftpd_users;
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table         | Create Table                                                                                                                                                                                                                                                                                                                                                                                                        |
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| proftpd_users | CREATE TABLE `proftpd_users` (
  `userid` int(11) NOT NULL AUTO_INCREMENT,
  `groupidfs` int(5) DEFAULT '0',
  `username` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  `homedir` varchar(50) NOT NULL,
  `shell` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`userid`),
  UNIQUE KEY `username` (`username`),
  UNIQUE KEY `homedir` (`homedir`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 |
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Zitat:
mysql> INSERT INTO proftpd_users (username, passwort, homedir)
VALUES ("Benutzer", NULL, NULL);
Danke das Hilft mir schon mal weiter.
Ich empfange den Username und das Passwort per POST mit:
Code:
$username = filter_input(INPUT_POST, "username", FILTER_SANITIZE_URL);
Das Homedir wird anschliessend aus $username erstellt.

Wenn die mir jetzt noch sagst wie ich per php, falls der Benutzername/das Passwort leer ist, "NULL" einsetzen kann bin ich happy :).
Dann wäre das Problem ja gelöst.
Mit Zitat antworten
  #5  
Alt 10.01.2011, 14:52:00
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 3
Beiträge: 395
thomas_w befindet sich auf einem aufstrebenden Ast
AW: NOT NULL erzeugt keinen Error

Zitat:
Zitat von iamgodx Beitrag anzeigen
$username = filter_input(INPUT_POST, "username", FILTER_SANITIZE_URL);

Wenn die mir jetzt noch sagst wie ich per php, falls der Benutzername/das Passwort leer ist, "NULL" einsetzen kann bin ich happy :).
Dann wäre das Problem ja gelöst.
Na in etwa so für jede Variable für den Insert. So ist sichergestellt, dass kein '' oder Blank drin steht, sondern tatsächlich der NULL-Wert.

PHP-Code:
if (empty($username)) {
 
$username null;

Probiert mal, ob es funktioniert.

EDIT
Als zweite Lösung gibt es noch den Server-Modus für die SESSION oder GLOBAL

Code:
mysql> SET SESSION sql_mode = 'STRICT_ALL_TABLES';
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO proftpd_users (username) VALUES ("Benutzer");
ERROR 1364 (HY000): Field 'xyz' doesn't have a default value
mysql>


Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.

Geändert von thomas_w (10.01.2011 um 15:13:47 Uhr) Grund: EDIT 2. Lösung
Mit Zitat antworten
  #6  
Alt 10.01.2011, 15:20:13
iamgodx iamgodx ist offline
Anfänger
 
Registriert seit: Aug 2007
Beiträge: 20
iamgodx befindet sich auf einem aufstrebenden Ast
AW: NOT NULL erzeugt keinen Error

Ich habe es nun mit der if schlauife gelöst, da eh auf keine andere Weise Daten in die DB gelangen.
Vielen Dank für deine Hilfe :)
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
COUNT mit JOINs und sub-queries kriechend langsam droehn MySQL 26 07.11.2010 13:25:36
XML aus MySQL auslesen atomicbunny MySQL 44 13.04.2010 13:54:03
Datenimport mit ODBC odie MySQL 4 27.11.2006 14:28:18
Datum nur einmal auslesen Soeren PHP Grundlagen 9 02.08.2005 11:50:06
order by punkte ASC Spike15 PHP Grundlagen 9 19.04.2005 17:27:51


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:13:22 Uhr.


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


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