MySQL vs SQL

DrBonsai

Mitglied
Hallo allerseits,

ich habe mal ein paar allgemeine Fragen zu MySQL und SQL (gibts das überhaupt, oder ist SQL immer gleich MSSQL? erste Frage...)

Folgendermaßen sieht es aus:
Ich schreibe auf der Arbeit eine Applikation, die aus einer DAtenbank verschiedene Informationen holt, je nach Auswahl des Users Werte berechnet und diese dann in eine neue Tabelle schreibt.

Die Source-Datenbank liegt auf dem Firmenserver und ist SQL, meine Applikation schreibe ich in php, nutze easyPHP zum testen und arbeite dementsprechend mit phpMyAdmin. Dort habe ich die source-Datenbank importiert.

Jetzt geht es so langsam daran, das ganze auf den Firmenserver zu spielen und im Internet verfügbar zu machen. Ich dachte: "Alles klar, dann hau ich mal die IP des servers etc in meine Datenbank-connection des php-scripts und dann greif ich locker flockig, ohne weitere Änderungen auf die Datenbank auf dem Server zu. Die neuen Tabellen exportier ich mit phpMyAdmin zu SQl, lege sie irgendwo auf dem Server ab und fertig."

Allerdings kriege ich es schon nicht hin, auf die Datenbank auf dem Firmenserver zuzugreifen, mit meinem Skript.

Meine Verbindung habe ich folgendermaßen umgeschrieben:
von
PHP:
	$db_connect=mysql_connect('127.0.0.1', 'root', '');
	$db_select=mysql_select_db('energia', $db_connect);

zu:
PHP:
	$db_connect_energias=sql_connect('192.168.1.1\sqlexpress', '(user)', '(password)');
	$db_select_energias=sql_select_db('ENERGIAS', $db_connect_energias);

Allerdings kommt dann der Hinweis, dass "Fatal error: Call to undefined function mssql_connect() in P:\EasyPHP-5.3.2\www\test\a.php on line 2"

Genauso, wenn ich statt "mssql" nur "sql" verwende.
Woran liegt das?
192.168.1.1\sqlexpress ist die IP des Servers im lokalen Netzwerk. Damit kann ich über Microsoft SQL server-Management_studio 2008 auf die DB zugreifen.

Kann ich nur zur IP 127.0.0.1 verbinden, wenn ich EasyPHP verwende, oder mache ich hier irgendetwas grundlegend falsch?
Ist der Gedanke prinzipiell richtig, dass ich einfach meine neuen Tabellen mit der Export-Funktion von phpMyAdmin in SQL-Dateien exportiere und diese dann auf den Server in eine Datenbank lege und dann genauso einfach wie vorher auf diese zugreifen kann (sofern ich die Verbindung aufgebaut kriege), odergibt es dramaitsche Unterschiede zwischen mySQL und SQL, die so eine einfache konvertierung unmöglich machen?

mfg,
David
 
Du wirst hächst wahrscheinlich deine SQL-Queries auch überarbeiten können, da MySQL und MSSQL viele Unterschiede haben. Um die mssql_-Funktionen nutzen zu können musste ich auf meinem System php5-sybase installieren.
 
Du redest hier etwas wirr durcheinander.

Geht es dir nun um MySQL oder um MsSQL ? Du bist etwas inkonsistent mit deiner Wortwahl =)
Zumindest gibt es hier 2 verschiedene Funktionsstämme...
 
Du redest hier etwas wirr durcheinander.
.

Ich bin auch verwirrt!

Ich habe nicht besonders viel Ahnung von Datenbanken. Dachte aber, dass MySQL im Prinzip das Gleich sei, wie SQL und dass ich genau so, wie ich auf eine MySQL Datenbank mit php zugreife (siehe oben) auch auf jede andere SQL Datenbank zugreifen könnte.

Allerdings klappt das nicht so einfach.

Ich gehe meine Verwirrung mal Schritt für SChritt an:

Kann mir jemand sagen, wie ich in php einen Zugriff auf eine SQL-Datenbanl programmiere?

mfg,
David
 
Wie ich schon sagte, ich musste unter Ubuntu das Packet php5-sybase nachinstallieren, um MSSQL-Support für PHP zu bekommen, da PHP das scheinbar nicht sofort kann. Dazu sei gesagt, dass ich apache2 als Webserver verwende, glaube aber nicht, dass das von Belang ist.
 
Hallo!

SQL ist eine Datenbanksprache..... die von div. Datenbanksystemen (z.B. MySQL, MSSQL, PostgreSQL, MaxDB usw.) genutzt wird.
Es gibt für PHP eine ganze Reihe an Datenbankerweiterungen.
Da SQL aber ja nur eine Datenbanksprache ist, musst Du erstmal in Erfahrung bringen welches Datenbanksystem eingesetzt wird.
Wenn Du dieses gemacht hast, kannst Du bei PHP nachsehen ob es eine passende Datenbankerweiterung gibt.

Allerdings kommt dann der Hinweis, dass "Fatal error: Call to undefined function mssql_connect() in P:\EasyPHP-5.3.2\www\test\a.php on line 2"
Die Meldung kommt schlicht und einfach daher, dass Du die Datenbankerweiterung für das Datenbanksystem MSSQL nicht installiert hast.
Es bringt aber absolut nichts diese Erweiterung zu installieren, wenn Dein Datenbanksystem nicht MSSQL ist.
Und noch weniger bringt es wenn Du PHP-Funktionen einfach umbenennst (sql_connect()) mit der Hoffnung dass sich dann irgendwas tut. ;)
Also wie gesagt, erstmal in Erfahrung bringen welches Datenbanksystem eingesetzt wird.

Gruss Dr Dau
 
Ich sollte ab jetzt immer anfangen ein neues posting zu verfassen, mittendrin aufhören, eine neue Idee ausprobieren. Denn dann klappt es.

Ich habs hin bekommen.

@DrDau:
Konnte zwar den zuständigen Großmeister der Datenbanken nicht erreichen (Ich wohne in Portugal und da ist die Arbeitsmoral manchmal schwach...) aber habe dann mal einfach geschätzt, dass es sich tatsächlich um msSQL handelt.

mssql_connect heißt aber heutzutage sqlsrv_connect.

So sieht es jetzt aus (Falls jemand in Zukunft auf der Suche nach nem Switch von MySQl zu msSQL ist, hifts vllt.)

PHP:
 $serverName = '(...)';  // IP-des Servers
$connectionOptions = array( "UID"=>"(...)",  //username des Anwenders
                         "PWD"=>"(...)",  // password
                         "Database"=>"(...)");  //Datenbankname

$conn = sqlsrv_connect( $serverName, $connectionOptions);

if( $conn )
{
    echo "Connection established.\n";
}
else
{
     echo "Connection could not be established.\n";
}

@ Akeshihiro:
Du hast leider recht. Meine Queries werde ich umbauen müssen. Zum Glück habe ich meinem Chef schon seit Wochen vorgeheult, dass es zu Problemen und Mehraufwand führt, je länger ich auf die endgültige Datenbank warten muss...

In sqlsrv gibt es leider nicht direkt den Befehl sqlsrv_fetch_assoc. So dass z.B eine Abfrage, die in MySQL so aussah:
PHP:
	$component =  "select ststamp from st WHERE ref = 'PT0000001004'";
				$query_component=mysql_query($component);
				while ($array = mysql_fetch_assoc($query_component)) 
					{
					$component_string = ($array['ref']); 
					}
				echo 	$component_string;

Jetzt sowas wird:
PHP:
$component = "select ststamp from st WHERE ref = 'PT0000001004'";
				$query_component=sqlsrv_query($conn, $component);
				while( $array = sqlsrv_fetch_array( $query_component, SQLSRV_FETCH_ASSOC))
					{
					$component_string = ($array['ststamp']); 
					}
				echo 	$component_string;
 
mssql_connect heißt aber heutzutage sqlsrv_connect.
Dann wurde der Microsoft Datenbanktreiber verwendet.

In sqlsrv gibt es leider nicht direkt den Befehl sqlsrv_fetch_assoc. So dass z.B eine Abfrage, die in MySQL so aussah:
Aber dafür gibt es mysql_fetch_array( ..... , MYSQL_ASSOC).
So hast Du zumindest ein klein wenig Ähnlichkeit im Code. ;)

Und ganz allgemein, falls Du noch etwas Hifle benötigst: MSDN Library: SQL Server kann sicherlich nicht schaden.
 
Zurück