Tom: MS-SQL -> MySQL

Beitrag lesen

Hello,

<?php
//MS-SQL-Server
$SQLServer = "localhost";
$SQLUser = "user";
$SQLPass = "password";
$SQLDB = "db1";

//Server connect
$dbhandle = mssql_connect($SQLServer, $SQLUser, $SQLPass)
  or die("Keine Verbindung möglich: $SQLServer");

//DB auswählen
$selected = mssql_select_db($SQLDB, $dbhandle)
  or die("Couldn't open database $SQLDB");

//alle Daten auswählen, sortierung nach absteigender laufender Nummer
$query = "SELECT * FROM tabelle ORDER BY tabelle.lfd\_nr DESC LIMIT 0, 5 ";

Kann mssql jetzt auch die Limit-Klausel vertragen?
Ich dachte bis eben, mssql könnte nur TOP?

//Abfrageergebnis
$result = mssql_query($query);
while($rows = mysql_fetch_array($result))

//connect schließen
mssql_close($dbhandle);
?>

Soweit konnte ich folgen.
Steht denn etwas drin in $rows? Kontrollausgaben?
Ich würde das anders schreiben...

$result = mssql_query($query);

if ($result)
  {
      $_table = array();
      $_row   = array();

while($_row = mysql_fetch_array($result))
      {
          $_table[] = $_row;         ## den aktuellen Satz zur Auswahltabelle hinzufügen
      }
  }
  else
  {
      ## Fehlerbehandlung
  }

mssql_close($dbhandle);

//ausgelesene Datensätze in MySQL-DB schreiben

<?php
//MySQL-Server
$MySQLServer = "localhost";
$MySQLUser = "user";
$MySQLPass = "password";
$MySQLDB = "db2";

//Server connect

#> $dbhandle = mssql_connect($MySQLServer, $MySQLUser, $MySQLPass)
#  wäre wohl besser, die MySQL-API-Funktion zu benutzen
   $dbhandle = mysql_connect($MySQLServer, $MySQLUser, $MySQLPass)

or die("Keine Verbindung möglich: $MySQLServer");

//DB auswählen

#> $selected = mssql_select_db($MySQLDB, $dbhandle)
   $selected = mysql_select_db($MySQLDB, $dbhandle)

or die("Couldn't open database $mySQLDB");

//und jetzt weiss ich nicht mehr weiter ....

$columnlist = 'zielspalte\_1,zielspalte\_2, ... , zielspalte\_n';

foreach($_table as $key => $_rec)
  {
     # Voraussetzung: keine der Spalten enthält den Wert NULL oder TRUE/FALSE
     # Anderenfalls muss das Escaping diskret gehandhabt werden.

$_rec = array_map(mysql_real_escape_string,$_rec,$dbhandle);  ## hope, that's right

$values = "'".implode("','", $_rec)."'";

$sql = "replace into $tablename ($columnlist) values($values)";

$replace_ok = mysql_query($sql,$dbhandle);
     ## http://dev.mysql.com/doc/refman/5.0/en/replace.html

## erledigten Record aus der Aufgabentabelle entfernen
     if ($replace_ok)
     {
         unset($_table[$key);
     }
  }

## hier Aufgabentabelle anzeigen / auswerten
  ## bei allen noch vorhandenen Datensätzen ist was schiefgegangen

//connect schließen

mysql_close($dbhandle);

?>

So ungefähr könnte es klappen.
Konntes es leider eben nicht mehr ausprobieren.

Liebe Grüße

Tom vom Berg

--
Nur selber lernen macht schlau