2010-08-19 12 views
4

J'utilise un script PHP qui met à jour une table à partir d'une base de données Oracle. D'abord je reçois un objet avec JSON:oracle php ORA-00911 caractère non valide sur UPDATE

[{"lot":"KLMHA17N9N00","requestor":"B10078","id":"FRESHLOT","username":"B26696","password":"B26696"},{"lot":"KLMHA17R1800","requestor":"B10078","id":"FRESHLOT"}] 

Cela sans problème puisque j'ai utilisé JSON dans d'autres projets.

Puis-je créer la requête après avoir analysé les résultats à l'objet rmrid de $:

$db_query = "update ao_lots 
       set RMRID='".$rmrid->requestor."-".$rmrid->id."' 
       where ALOT_NUMBER='".$rmrid->lot."';"; 

Si je fais écho à la requête que j'obtiens ceci:

update ao_lots 
    set RMRID='B10078-FRESHLOT' 
where ALOT_NUMBER='KLMHA17N9N00'; 

Je ne vois pas de problème ici mais quand j'exécute la requête je reçois cet avertissement et rien n'est mis à jour:

AVERTISSEMENT: oci_execute() [fonction.oci-execute]: ORA-00911: caractère invalide

Je l'ai fait une recherche sur ce code d'erreur, mais je ne pouvais pas le fixer avec les informations que je trouve

Toutes les suggestions seraient grandement appréciés

+1

Pls mettre à jour la question avec la sortie de 'DESCRIBE AO_LOTS' –

+0

Il serait également Aidez-nous si vous pouviez essayer d'exécuter le SQL que vous avez généré à partir de SQL * Plus et voir si vous avez la même erreur. Vous pouvez annuler la mise à jour s'il n'y a pas d'erreur d'instruction. – dpbradley

+0

J'ai couru la déclaration sur SQL * Plus et il fonctionne sans problèmes, je l'ai fait il y a longtemps, mais je veux automatiser le processus maintenant – Arturo

Répondre

14

Le point-virgule est pas nécessaire à la fin de l'instruction SQL.

Il est utilisé par SQL * Plus et la plupart des autres outils pour indiquer « Je viens d'écrire la déclaration, maintenant va l'exécuter »

+0

Cela a résolu le problème, je pensais que j'avais essayé, merci! – Arturo