2010-02-15 4 views
2

J'ai été chargé de synchroniser deux produits MS SQL. Mon prédécesseur s'est contenté de faire correspondre les enregistrements en fonction d'une combinaison de nom et d'adresse, mais les deux systèmes ont un GUID, et un seul l'utilise réellement. Donc, mon idée était de faire correspondre mes enregistrements existants et copier le GUID d'une base de données à l'autre. Mais je n'arrive pas à mettre à jour un GUID dans MS SQL en utilisant PHP et ODBC. La requête échoue silencieusement. Si je fais écho à la requête et que je la copie/colle dans SQL Management Studio ou Oracle SQL Developer, cela fonctionne correctement. La version simplifiée de ma requête ressemble à ceci:Comment mettre à jour GUID en MS SQL via PHP/ODBC?

$SQL = "UPDATE Contact SET SifGuid = CONVERT(VARCHAR(36), '" . $this->GUID . "') "; 
$SQL .= "WHERE contactID = " . $this->POSID . "; 

Envoi par cette requête odbc_exec échoue. Mais comme je l'ai mentionné, la même requête exacte fonctionne correctement dans SQL Management Studio ou Oracle SQL Developer.

Des idées?

Merci d'avance!

+0

Qu'est-ce que Profiler show est en cours d'exécution? –

+0

Je suis un peu nouveau à PHP (mon dernier travail était de faire des applications de bureau, donc ça fait longtemps que j'ai fait du web), alors pardonnez mon ignorance, mais comment est-ce que je pourrais découvrir ce que Profiler montre? – bradrhine

Répondre

2

Lorsque vous interrogez les données sur le premier serveur, assurez-vous convertissez les données à VARCHAR()

 
SELECT CONVERT(VARCHAR(36),guidCol) AS guid FROM table 

Ensuite, lorsque vous insérez, vous devez jeter à une valeur GUID car il est déjà une chaîne en PHP.

 
UPDATE table SET guidCol = CAST(UNIQUEIDENTIFIER, '" . $this->GUID . "') 
+0

Merci, Erik, mais pas de dés. Cela ne fonctionnera pas encore avec odbc_exec, bien que odbc_error ne montre rien de mal. Mais si je copie la requête dans SQL Developer, elle s'exécute très bien. – bradrhine

Questions connexes