Hi All,
ich bin gerade dabei mir eine Anwendung in .NET zu schreiben welches über ein PHP-Script auf eine MySQL Anwendung zugreifen soll, da der MySQL-Connector ja hier (und auch bei anderen Hostern) ja nicht funktioniert.
Im Voraus gesagt: bei PHP / MySQL bin ich noch relativ neu und kämpfe mich durch die üblichen Anfängerprobleme, während ich bei .NET wohl schon eher zu den Fortgeschrittenen gehöre.
Ich habe mich mittels Trial & Error durchgewuselt, hänge jetzt aber schon seit einigen Stunden an UTF8-Encoding Problemen .
Meine Datenbank ist simpel:
- DB Inventar mit 2 Tabellen (Schlüssel,Bezeichnung)
- alles auf Collation UTF8_Generall_ci gesetzt was ging ( DB-Interface,Tabellen)
Der Zugriff auf die DB soll über httpWebRequest POST erfolgen, wobei
- Content-Type = “application/x-www-form-urlencoded”
- Cookies werden nicht akzeptiert (CookieContainer=Nothing)
- Post-Encoding auf UTF8
Das PHP-Script ist leider das Kernproblem (oder die Übertragung dahin):
- das PHP-Script ist in einer UTF8-Datei (ohne Byte-Order-Mark)
- ich habe alle Verbuindungen auf UTF8 gesetzt die mir einfielen
// valid connection: connect to database
$db=@mysql_connect($host, $username, $password) or die (sqlerror(mysql_errno(), mysql_error() ));
@mysql_select_db($db_name) or die (sqlerror(mysql_errno(), mysql_error() ));
mysql_set_charset('utf8',$db);
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $db);
mysql_query("SET NAMES 'utf8'");
// query empty ?
if(empty($_POST['query'])) die(sqlerror(0, "Query is empty") );
// send query
$query = $_POST['query'];
//$query="INSERT INTO Inventar (Schlüssel,Bezeichnung) VALUES('H-AX-3272','KIA Sorento')";
$result = mysql_query($query)or die (sqlerror(mysql_errno(), mysql_error() ));
Schicke ich die INSERT-Query aus dem PHP-Script ab, so läuft alles sauber. Schicke ich die identische Query als HTTP POST ab, so bekomme ich den Fehler:
1064|You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'H-AX-3272\',\'KIA Sorento\')' at line 1|
Hat jemand eine Idee was ich noch ausprobieren könnte ? Hab so ziemlich alles hier im Forum und eine Menge Links in Google durchgeackert, aber komme irgendwie nicht weiter.
Ausserdem bin ich auch wirklich nicht zufrieden mit dieser Lösung, da alles supergenau aufeinander abgestimmt sein muss. Eine robustere Lösung wäre mir lieber …
Wie habt Ihr das gemacht ?
Gruss, Peter