Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP Wert Null an MS-SQL übergeben

Frage Entwicklung PHP

Mitglied: XxxMarcoxxX

XxxMarcoxxX (Level 1) - Jetzt verbinden

16.06.2011 um 17:39 Uhr, 5210 Aufrufe, 4 Kommentare

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
Mitglied: Arano
16.06.2011 um 20:32 Uhr
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.

01.
$var = NULL; 
02.
$query = "INSERT INTO `tabelle` (`name`) VALUES (".$var.")"
03.
// $var ist null / leer, also wird in den Query  __nichts__ eingefügt 
04.
$query = "INSERT INTO `tabelle` (`name`) VALUES ()"
05.
// was einen leeren Datensartz erzeugt - oder ehr eine Fehlermeldung ;)
An die entsprechende Stelle im Query darf nicht NULL eingefügt werden sondern NULL - also nicht der Wert NULL, sondern die Zeichenkette NULL
01.
$query = "INSERT INTO `tabelle` (`name`) VALUES (NULL)"
02.
// bzw. 
03.
$query = "INSERT INTO `tabelle` (`name`) VALUES (".(is_null($var)?'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
Bitte warten ..
Mitglied: XxxMarcoxxX
17.06.2011 um 09:57 Uhr
Morsche Arano,

ja super Sache, das Funktioniert eindwandfrei, habe doch dann aber noch eine Frage an dich
Falls die var dann doch mal einen Wert hat, trage ich Sie doch nach dem " : " ein oder?


01.
<? 
02.
 
03.
if(isset($var)){ 
04.
$var = 'HateinenWert'
05.
} else { $var = NULL; } 
06.
 
07.
$query = "INSERT INTO `tabelle` (`name`) VALUES (".(is_null($var)?'NULL':'$var').")"
08.
?>
Nur leider hat das nicht hin, der sagt mir ständig die Fehlermeldung:
mssql-query'>function.mssql-query</a>]: message: Ungültige &quot;$var&quot;-Pseudospalte. (severity 15) in....

Grüße Marco
Bitte warten ..
Mitglied: Arano
17.06.2011 um 15:43 Uhr
Hallo Marco

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 echo
Zitat: PHP-Manual - if
BEDINGUNG ? WENN_WAHR : WENN_FALSCH
So könntest du die Variable auch vorher manipulieren:
01.
$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 ;)

01.
$query = "INSERT INTO `tabelle` (`name`) VALUES (".(is_null($var)?'NULL':'\''.$var.'\'').")";
Weil der Query so aber etwas schlecht zu lesen ist, greife ich dein Beispiel und meine Erwähnung wieder auf:
01.
<?php 
02.
if(isset($var)) 
03.
    $var = '\''HateinenWert'\''; // zusätzliche Anführungszeichen für den Query, NULL darf keine haben 
04.
else 
05.
    $var = 'NULL'; // in der PHP-Variable noch eine normale Zeichenkette, im Query dann aber ohne anführungszeichen damit es als Attribut erkannt wird 
06.
 
07.
// oder in kurz: 
08.
$var = isset($var) ? '\''.$var.'\'' : 'NULL'
09.
 
10.
$query = "INSERT INTO `tabelle` (`name`) VALUES (".$var.")"
11.
//Ergibt: INSERT INTO `tabelle` (`name`) VALUES ('content'
12.
//Ergibt: INSERT INTO `tabelle` (`name`) VALUES (NULL) 
13.
?>

Schönen Start ins Wochenende
~Arano
Bitte warten ..
Mitglied: XxxMarcoxxX
20.06.2011 um 12:29 Uhr
Guten morgen Arno,

hat wunderbar geklappt, vielen dank für deine exzelente Hilfe..

Grüße Marco
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Datenbanken
MS-SQL-Server + T-SQL+Batch (4)

Frage von kallewirsch zum Thema Datenbanken ...

Datenbanken
gelöst Täglicher Export einer View aus MS SQL 2008 in Excel oder CSV (9)

Frage von Arafat zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...