PHP Wert Null an MS-SQL übergeben
Hallöchen PHP Freunde
folgendes Problem, ich habe eine Variable die ich in meinem Script auf $var = NULL; setze und dieses in meinen MS-SQL 2008 schreibe.
Nur leider schreibt er nicht das Feld auf "NULL" sondern das Feld ist einfach nur "empty".
Ich habe jetzt mindestens halb google zu diesem Thema durch und finde einfach keinen Ansatz, bin auch davon ausgegangen das man dies in der PHP.ini einstellt, aber pustekuche.
Ich weiss das es in My-SQL geht aber hier ist irgendwie mal wieder der Wurm drin.
Könnte Ihr mir weiterhelfen?
Grüße Marco
folgendes Problem, ich habe eine Variable die ich in meinem Script auf $var = NULL; setze und dieses in meinen MS-SQL 2008 schreibe.
Nur leider schreibt er nicht das Feld auf "NULL" sondern das Feld ist einfach nur "empty".
Ich habe jetzt mindestens halb google zu diesem Thema durch und finde einfach keinen Ansatz, bin auch davon ausgegangen das man dies in der PHP.ini einstellt, aber pustekuche.
Ich weiss das es in My-SQL geht aber hier ist irgendwie mal wieder der Wurm drin.
Könnte Ihr mir weiterhelfen?
Grüße Marco
Please also mark the comments that contributed to the solution of the article
Content-Key: 168145
Url: https://administrator.de/contentid/168145
Printed on: April 26, 2024 at 12:04 o'clock
4 Comments
Latest comment
Hallo Freund ...Marco *g*
Habe keinen MSSQL-Server.
Aber ich vermute mal, das du einen kleinen Fehler machst... höhö.... einen der "bei MySQL" zum gleichem Ergebnis führen sollte.
An die entsprechende Stelle im Query darf nicht NULL eingefügt werden sondern NULL - also nicht der Wert NULL, sondern die Zeichenkette NULL
So das die Zeichenkette NULL erst von der Datenbank noch als Attribut NULL interpretiert werden kann / muss.
Hoffe ich habe damit helfen können,
schönen Gruß
~Arano
Habe keinen MSSQL-Server.
Aber ich vermute mal, das du einen kleinen Fehler machst... höhö.... einen der "bei MySQL" zum gleichem Ergebnis führen sollte.
$var = NULL;
$query = "INSERT INTO `tabelle` (`name`) VALUES (".$var.")";
// $var ist null / leer, also wird in den Query __nichts__ eingefügt
$query = "INSERT INTO `tabelle` (`name`) VALUES ()";
// was einen leeren Datensartz erzeugt - oder ehr eine Fehlermeldung ;)
$query = "INSERT INTO `tabelle` (`name`) VALUES (NULL)";
// bzw.
$query = "INSERT INTO `tabelle` (`name`) VALUES (".(is_null($var)?'NULL':'').")";
Hoffe ich habe damit helfen können,
schönen Gruß
~Arano
Hallo Marco
Ja, von Prinzip her war das richtig !
So könntest du die Variable auch vorher manipulieren:
Dein Fehler:
Zeichenketten in einfachen Anführungszeichen werden nicht von PHP geparst, was zufolge hat, das in deinem Query "$var" steht und nicht dessen Wert !
PHP-Manual - echo
Da ist aber noch ein Fehler ;) Denn der Wert im ELSE-Zweig ist ein falscher für den Query !
Du musst nocheinmal Anführungszeichen mitgeben damit die Zeichenkette im Query in Anführungszeichen steht ;)
Weil der Query so aber etwas schlecht zu lesen ist, greife ich dein Beispiel und meine Erwähnung wieder auf:
Schönen Start ins Wochenende
~Arano
Ja, von Prinzip her war das richtig !
(is_null($var)?'NULL':'$var')
Ist nämlich eine Kurzform vom IF-ELSE in Klammern für das echoSo könntest du die Variable auch vorher manipulieren:
$var = isset() ? 'NULL' : $var;
Dein Fehler:
Zeichenketten in einfachen Anführungszeichen werden nicht von PHP geparst, was zufolge hat, das in deinem Query "$var" steht und nicht dessen Wert !
PHP-Manual - echo
Da ist aber noch ein Fehler ;) Denn der Wert im ELSE-Zweig ist ein falscher für den Query !
Du musst nocheinmal Anführungszeichen mitgeben damit die Zeichenkette im Query in Anführungszeichen steht ;)
$query = "INSERT INTO `tabelle` (`name`) VALUES (".(is_null($var)?'NULL':'\''.$var.'\'').")";
<?php
if(isset($var))
$var = '\''HateinenWert'\''; // zusätzliche Anführungszeichen für den Query, NULL darf keine haben
else
$var = 'NULL'; // in der PHP-Variable noch eine normale Zeichenkette, im Query dann aber ohne anführungszeichen damit es als Attribut erkannt wird
// oder in kurz:
$var = isset($var) ? '\''.$var.'\'' : 'NULL';
$query = "INSERT INTO `tabelle` (`name`) VALUES (".$var.")";
//Ergibt: INSERT INTO `tabelle` (`name`) VALUES ('content')
//Ergibt: INSERT INTO `tabelle` (`name`) VALUES (NULL)
?>
Schönen Start ins Wochenende
~Arano