"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

mysql - column 'betrag' cannot be null

Bunny 23.10.2010 - 22:43 3445 28
Posts

Bunny

Addicted
Avatar
Registered: Oct 2002
Location: Austria
Posts: 525
Hi!

möchte einen wert vom datentyp double in meine mysql datenbank speichern... nur bekomm ich immer die fehlermeldung ... column 'betrag' cannot be null ...

in der datenbank ist bei 'NULL' auf Nein, und 'Standard' auf Kein ... wo isn da der fehler das er mir den wert nicht speicher... auch wenn ich auf Null stelle funktionierts nichts....

ich hab auch schon probiert statt double auf integer umzustellen.... da kommt aber auch die selbe meldung....

hat jemand eine idee ?

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
Machst dus direkt mit einem INSERT Statement oder automatisiert? In beiden Fällen: Source or it didn't happen ;)

quilty

Ich schau nur
Avatar
Registered: Jul 2005
Location: 4202
Posts: 2988
und ddl der table schadet auch nicht bei der fehlersuche

die betrag-column ist nicht zufällig teil des primary keys? oder sonst irgendein lustiges constrain das sich irgendwo eingeschummelt hat?

Bunny

Addicted
Avatar
Registered: Oct 2002
Location: Austria
Posts: 525
ja mittels INSERT INTO.... sollte das funktionieren...
text funktionieren zwar , also vom typ TEXT und varchar kann ich einlesen und speichern...

den column betrag hab ich extra hinzugefügt... hat also nichts mit dem primary key zu tun....

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4280
Meine Glaskugel meint: Du machst was falsch.

Und wenn du den Source zeigen würdest, könnte man sogar helfen.
Bearbeitet von kleinerChemiker am 23.10.2010, 23:28 (Tippfehler)

Vo

Legend
Editor from hell
Avatar
Registered: Jan 2007
Location: Brunn
Posts: 1016
"'NULL' auf Nein" -- Ich kenn ja Deine Oberfläche nicht, aber wenn das "Allow NULL" heißt, ...

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11332
Zwischen "ich möchte ..." und "es kommt eine Fehlermeldung" hast du vergessen zu beschreiben, was du genau getan hast.

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Unterschiedliche Datentypen, falsches Objekt... Welches API überhaupt oder welche Sprache!?
Bearbeitet von watchout am 24.10.2010, 02:06

Bunny

Addicted
Avatar
Registered: Oct 2002
Location: Austria
Posts: 525
ja also sprache is php...

ich hab mich am tutorial von quakenet gehalten....

Code: PHP
$sql = 'INSERT INTO
                rechnung(Autor, Datum,Inhalt,Betrag)
            VALUES
                (?, NOW(), ?,?)';
    $stmt = $db->prepare($sql);
    if (!$stmt) {
        die ('Es konnte kein SQL-Query vorbereitet werden: '.$db->error);
    }
	$stmt->bind_param('sss',$autor, $inhalt,$betrag);
    if (!$stmt->execute()) {
        die ('Query konnte nicht ausgeführt werden: '.$stmt->error);
	}

und ich verwende für die sql datenbank Phpmyadmin... und so siehts derzeit aus... ich hab jetzt mal probiert der einfachkeit statt integer oder double auf text umzustellen... nur bekomm ich da die selbe meldung ... Column Betrag cannot be null ...

komischerweise wenn ich 'betrag' aus dem quellcode rausnehme und nur inhalt autor und datum habe funktionierts...
sql_160614.jpg (downloaded 53x)

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11332
Wo ist der restliche Code?

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Was passiert wenn du deine Zeile 10 durch
Code: PHP
$stmt->bind_param('ssi', 'a', 'b', 5);
ersetzt?

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4280
Ich tippe mal auf deaktiviertes register_globals und direkte Übernahme der Variablen aus der Anfrage.

Bunny

Addicted
Avatar
Registered: Oct 2002
Location: Austria
Posts: 525
wenn ich die zeile so umändere, wie du geschrieben hast bekomm ich folgende fehlermeldung:

Fatal error: Cannot pass parameter 4 by reference



EDIT: register_globals = off

wenn ich richtig gelesen habe in der php.ini ...
Bearbeitet von Bunny am 26.10.2010, 09:46

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4280
wie schon that geschrieben hat, poste den Code, dann kann man dir helfen. Oder schickst du deinem Arzt ein Büschel Haare, weil du Kopfweh hast und er dir helfen soll?

Bunny

Addicted
Avatar
Registered: Oct 2002
Location: Austria
Posts: 525
so, ich hab jetzt mal register_globals auf ON gestellt... bringt auch nichts.

hab jetzt den Betrag-Column wieder wieder auf Integer und ********wert NULL eingestellt...

am screenshot sieht man eh das der text und datum speichern funktioniert. nur bei betrag steht immer NULL, obwohl ich irgend einen Wert (123) eingegeben habe.

Fehlermeldung kommt jetzt dafür keine mehr.


EDIT : @ kleinerChemiker ..,. cooler vergleich =) ...

hier der komplette code:

Code: PHP
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$db = @new mysqli('localhost', 'root', '', 'poky');
if (mysqli_connect_errno()) {
    die('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
}
if ('POST' == $_SERVER['REQUEST_METHOD']) {
    if (!isset($_POST['Autor'],$_POST['Betrag'], $_POST['Inhalt'], $_POST['formaction'])) {
        die ('Benutzen sie nur Formulare von der Homepage.');
    }
	if (('' == $autor = trim($_POST['Autor'])) or 
           ('' == $inhalt = trim($_POST['Betrag'])) or
			('' == $inhalt = trim($_POST['Inhalt']))){			
        die ('Bitte füllen sie das Formular vollständig aus.');
	}
	$sql = 'INSERT INTO
                rechnung(Autor, Datum,Inhalt,Betrag)
            VALUES
                (?, NOW(), ?,?)';
    $stmt = $db->prepare($sql);
    if (!$stmt) {
        die ('Es konnte kein SQL-Query vorbereitet werden: '.$db->error);
    }
	$stmt->bind_param('ssi',$autor, $inhalt, $betrag);
    if (!$stmt->execute()) {
        die ('Query konnte nicht ausgeführt werden: '.$stmt->error);
	}
	
}
?>



....
Bearbeitet von Bunny am 26.10.2010, 09:59
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz