mysql - column 'betrag' cannot be null

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/mysql_column_betrag_cannot_be_null_219789/page_1 - zur Vollversion wechseln!


Bunny schrieb am 23.10.2010 um 22:43

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 schrieb am 23.10.2010 um 22:49

Machst dus direkt mit einem INSERT Statement oder automatisiert? In beiden Fällen: Source or it didn't happen ;)


quilty schrieb am 23.10.2010 um 23:02

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 schrieb am 23.10.2010 um 23:09

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 schrieb am 23.10.2010 um 23:13

Meine Glaskugel meint: Du machst was falsch.

Und wenn du den Source zeigen würdest, könnte man sogar helfen.


Vo schrieb am 23.10.2010 um 23:25

"'NULL' auf Nein" -- Ich kenn ja Deine Oberfläche nicht, aber wenn das "Allow NULL" heißt, ...


that schrieb am 24.10.2010 um 01:00

Zwischen "ich möchte ..." und "es kommt eine Fehlermeldung" hast du vergessen zu beschreiben, was du genau getan hast.


watchout schrieb am 24.10.2010 um 02:03

Unterschiedliche Datentypen, falsches Objekt... Welches API überhaupt oder welche Sprache!?


Bunny schrieb am 25.10.2010 um 23:49

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


that schrieb am 26.10.2010 um 01:50

Wo ist der restliche Code?


watchout schrieb am 26.10.2010 um 01:56

Was passiert wenn du deine Zeile 10 durch

Code: PHP
$stmt->bind_param('ssi', 'a', 'b', 5);
ersetzt?


kleinerChemiker schrieb am 26.10.2010 um 09:30

Ich tippe mal auf deaktiviertes register_globals und direkte Übernahme der Variablen aus der Anfrage.


Bunny schrieb am 26.10.2010 um 09:41

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


kleinerChemiker schrieb am 26.10.2010 um 09:52

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 schrieb am 26.10.2010 um 09:53

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);
	}
	
}
?>



....




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025