Programmieren - alles kontrollieren 4.929 Themen, 20.599 Beiträge

PHP und MS SQL - Skript für Create Table geht nicht

uspc / 4 Antworten / Baumansicht Nickles

Hallo zusammen, ich möchte per PHP-Skript eine Tabelle auf einem MS SQL-Server erstellen. Bisher mit MySQL kein Problem, aber hier komme ich nicht weiter. Selbst einfachste Skript laufen nicht. 

  $sql = "
  CREATE TABLE dbo.ip
  (
  ip_key int NULL,
  ip_adresse varchar(20) NULL,
  ip_bereich varchar(50) NULL) ";  // nur ein Beispiel, schon stark gekürzt 
  $go = sqlsrv_query($conn,$sql);

Der Connect zur entsprechenden DB steht, Abfragen mit Select, Update usw. funktionieren, nur CREATE eben nicht. Das Problem ist, dass wohl PHP und MS SQL nicht weit verbreitet ist und man damit kaum mit dem großen G.. fündig wird. Wie gesagt, ich möchte die Tabelle per PHP-Skript erstellen.

Super wenn jemand ein Beispiel hat oder mir ein Hinweis geben kann. Danke! uspc

bei Antwort benachrichtigen
Borlander uspc

„PHP und MS SQL - Skript für Create Table geht nicht“

Optionen
aber hier komme ich nicht weiter. Selbst einfachste Skript laufen nicht. 

Fehlercode oder Fehlermeldung?

Müsstest Du ggf. auch noch explizit abfragen.

Existiert die Datenbank in der die Tabelle erstellt werden soll? Ansonsten müsstest Du die vorher noch anlegen.

bei Antwort benachrichtigen
uspc Borlander

„Fehlercode oder Fehlermeldung? Müsstest Du ggf. auch noch explizit abfragen. Existiert die Datenbank in der die Tabelle ...“

Optionen

Hi Borlander, also stell dir vor, ich schreibe in dem Script:

$sql = "SELECT * FROM dbo.Table_Name";

  $go = sqlsrv_query($conn,$sql);

statt der o.g. CREATE hin und es funktioniert, kann es ja nur an der (MS SQL) Syntax liegen. Also der Connect ist ok, DB existiert, usw. Auch die Berechtigungen sind ok, ich kann ja auch INSERT im Skript aufrufen. Ich kann mir vorstellen, dass ich für Microsoft-SQL das nicht so einfach formulieren kann wie in MySQL. 

Ich bin morgen wieder am MS SQL und werde noch ein paar Stunden weiterprobieren. Dort werde ich mal alle Fehlermeldungen einblenden lassen (habe error_reporting noch inaktiv). Gute Idee, Danke und schönen Abend! uspc

bei Antwort benachrichtigen
Borlander uspc

„Hi Borlander, also stell dir vor, ich schreibe in dem Script: sql SELECT FROM dbo.Table_Name go sqlsrv_query conn, sql ...“

Optionen
Dort werde ich mal alle Fehlermeldungen einblenden lassen (habe error_reporting noch inaktiv).

Ich meinte nicht die Fehler von PHP, sondern die Auswertung der Rückmeldungen vom Server. Siehe http://php.net/manual/en/function.sqlsrv-errors.php

Btw.: Gibt es einen Grund dafür warum Du nicht PDO verwendest? Gerade wenn Du mit unterschiedlichen Datenbankservern arbeitest würde sich das wahrscheinlich lohnen.

bei Antwort benachrichtigen
uspc Borlander

„Ich meinte nicht die Fehler von PHP, sondern die Auswertung der Rückmeldungen vom Server. Siehe ...“

Optionen

Guten Morgen, Danke für den Tipp mit PDO, über diesen Weg konnte ich den Fehler finden: Es lag an den Berechtigungen (DB Rollen)  im MS SQL des angemeldeten Benutzers. Wenn ich dort dem Webserver-Benutzer unter Sicherheit die Mitgliedschaft db_owner oder db_ddladmin gebe klappt es. Jetzt kann ich per PHP Skript meine Tabelle erstellen. Vielen Dank!

$sqlL = "CREATE TABLE tab_name(
  test_key  INT IDENTITY(1,1),
  werta varchar(20),
  wertb varchar(20),
  PRIMARY KEY(test_key))";

uspc

bei Antwort benachrichtigen