Hallo Ihr,
in diversen Foren habe ich Beiträge zu meinem Thema gefunden, allerdings hatte nie jemand eine Lösung parat. Daher zähle ich nun auf Euch!
Ich möchte Unicode in eine MS SQL DB speichern, da das System später auch mit koreanischen Inhalten laufen soll.
Folgender Code zum Testen:
Das Datenbankfeld Lastname ist vom Typ NVARCHAR und braucht als Input UCS-2 (laut anderen Forenbeiträgen). Aber nach der Konvertierung bei (1) und dem ausführen bei (2) bekomme ich folgenden Fehler:
Ich hoffe jemand kann mir helfen. Ich hab in der php.ini übrigens mbstring.func_overload=7 eingestellt.
Es ist eigentlich egal, was man in das Formularfeld einträgt, ob Sonderzeichen oder nicht. Er machts einfach nicht. Stelle ich die Konvertierung bei (1) aus, so trägt er es brav ein. Aber dann speichere ich UTF-8 in ein UCS-2 Feld und das will ich eigentlich nicht.
Wer (1) mal auskommentiert wird sehen, dass die Inhalte auch wieder korrekt aus der DB herauskommen... aber ich weiß nicht, wie sich das dann bei koreanischen Schriftzeichen verhält!
Auf Hilfe hoffend
Gruß
Thorsten
in diversen Foren habe ich Beiträge zu meinem Thema gefunden, allerdings hatte nie jemand eine Lösung parat. Daher zähle ich nun auf Euch!
Ich möchte Unicode in eine MS SQL DB speichern, da das System später auch mit koreanischen Inhalten laufen soll.
Folgender Code zum Testen:
PHP-Code:
<?php
include(dirname(__FILE__)."/include.php");
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
</head>
<body>
";
// variablen des Formulars holen
if(isset($_POST['form'])) $form=$_POST['form'];
else $form="";
if(isset($_POST['users_Lastname'])) $users_Lastname=$_POST['users_Lastname'];
else $users_Lastname="";
// datenbank öffnen
$db=array();
$db["host"]="localhost"; // 10.1.7.107
$db["port"]="1433";
$db["db"]="PLS";
$db["user"]="root";
$db["pw"]="root";
$db["typ"]="mssql";
$db["via"]="direct";
$db["commit"]=1;
// Verbindung zum Server erfolgreich?
if(!($db["link"] = mssql_connect($db["host"], $db["user"], $db["pw"])))
{
echo "Konnte nicht zum Server ".$db["host"]." verbinden";
exit;
}
// Datenbank auswählen
$result = mssql_select_db($db["db"], $db["link"]);
if(!$result) // Datenbank konnte nicht ausgewählt werden
{
echo"Konnte nicht zur Datenbank ".$db["db"]." verbinden";
exit;
}
if($form!="") // formular wurde abgesendet
{
$users_Lastname=mb_convert_encoding($users_Lastname, "UCS-2", "UTF-8"); // (1)
$table="T_USER";
$insert="(Lastname) VALUES('$users_Lastname')";
$result="";
$query="INSERT $table $insert";
$db_result = mssql_query($query, $db["link"]); // (2)
echo "db_result nach INSERT: $db_result";
}
// Alle Datensätze wieder auslesen, zur Kontrolle
$query="SELECT * FROM T_User";
$db_result = mssql_query($query, $db["link"]);
while($row=mssql_fetch_array($db_result))
{
$new=mb_convert_encoding($row["Lastname"], "UTF-8", "UCS-2");
echo $row["Lastname"]." - $new <br>";
}
echo"
<form action=\"$PHP_SELF\" method=\"POST\">
<input type=\"hidden\" name=\"form\" value=\"users\" >
<input type=\"text\" name=\"users_Lastname\" value=\"\" size=\"32\" maxlength=\"256\" >
<a href=\"#\" onClick=\"document.forms[0].submit();\">speichern</a>
</form>
</body>
</html>
";
?>
Warning: mssql_query(): message: Unclosed quotation mark before the character string ''. (severity 15) in c:\inetpub\wwwroot\pls\test.php on line 52
Warning: mssql_query(): message: Line 1: Incorrect syntax near ''. (severity 15) in c:\inetpub\wwwroot\pls\test.php on line 52
Warning: mssql_query(): Query failed in c:\inetpub\wwwroot\pls\test.php on line 52
Warning: mssql_query(): message: Line 1: Incorrect syntax near ''. (severity 15) in c:\inetpub\wwwroot\pls\test.php on line 52
Warning: mssql_query(): Query failed in c:\inetpub\wwwroot\pls\test.php on line 52
Es ist eigentlich egal, was man in das Formularfeld einträgt, ob Sonderzeichen oder nicht. Er machts einfach nicht. Stelle ich die Konvertierung bei (1) aus, so trägt er es brav ein. Aber dann speichere ich UTF-8 in ein UCS-2 Feld und das will ich eigentlich nicht.
Wer (1) mal auskommentiert wird sehen, dass die Inhalte auch wieder korrekt aus der DB herauskommen... aber ich weiß nicht, wie sich das dann bei koreanischen Schriftzeichen verhält!
Auf Hilfe hoffend
Gruß
Thorsten
Kommentar