Bunny
Addicted
|
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.
|
Machst dus direkt mit einem INSERT Statement oder automatisiert? In beiden Fällen: Source or it didn't happen
|
quilty
Ich schau nur
|
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
|
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
|
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
LegendEditor from hell
|
"'NULL' auf Nein" -- Ich kenn ja Deine Oberfläche nicht, aber wenn das "Allow NULL" heißt, ...
|
that
Hoffnungsloser Optimist
|
Zwischen "ich möchte ..." und "es kommt eine Fehlermeldung" hast du vergessen zu beschreiben, was du genau getan hast.
|
watchout
Legendundead
|
Unterschiedliche Datentypen, falsches Objekt... Welches API überhaupt oder welche Sprache!?
Bearbeitet von watchout am 24.10.2010, 02:06
|
Bunny
Addicted
|
ja also sprache is php... ich hab mich am tutorial von quakenet gehalten.... $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
Hoffnungsloser Optimist
|
Wo ist der restliche Code?
|
watchout
Legendundead
|
Was passiert wenn du deine Zeile 10 durch $stmt->bind_param('ssi', 'a', 'b', 5);
ersetzt?
|
kleinerChemiker
Here to stay
|
Ich tippe mal auf deaktiviertes register_globals und direkte Übernahme der Variablen aus der Anfrage.
|
Bunny
Addicted
|
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
|
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
|
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: <?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
|