Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Come inserisco parole apostrofate in sql server

    Non riesco a inserire variabili con apostrofi nel db sql server. I dati vengono gestiti con php, se vengono passate senza slash naturalmente va in errore, e fin qui è corretto, ma se metto lo slash mi restituisce sempre errore, come posso fare? vers. db SQL Server 2000

    la query:
    Codice PHP:
    $idriparazione $_GET['id_riparazione'];
    $idapparato $_GET['id_apparato'];
    $stato_riparaz $_GET['stato_riparaz'];
    $data_riparazione $_GET['data_riparazione'];
    $tecnico trim($_GET['tecnico']);
    $guasto trim($_GET['guasto']);
    $soluzione trim($_GET['soluzione']);

    $sql "UPDATE t_riparazioni SET
        data_riparazione = '
    $data_riparazione',
        tecnico = '
    $tecnico',
        guasto = '
    $guasto',
        soluzione = '
    $soluzione',
        stato = '
    $stato_riparaz'
        WHERE id_riparazione = '
    $idriparazione'
    "

    L'errore che restituisce è:
    Warning: mssql_query() [function.mssql-query]: message: Riga 4: sintassi non corretta in prossimit?i 'alimentatore'. (severity 15) in C:\www\arcdb\php\riparazioni\modifica_riparazione. php on line 25

    Warning: mssql_query() [function.mssql-query]: message: Virgoletta di chiusura mancante prima della stringa di caratteri ' '. (severity 15) in C:\www\arcdb\php\riparazioni\modifica_riparazione. php on line 25

    Warning: mssql_query() [function.mssql-query]: Query failed in C:\www\arcdb\php\riparazioni\modifica_riparazione. php on line 25


    Grazie,
    ciao.

  2. #2
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Hai provato con addslashes ?

    So che non usi mysql, però potresti crearti una funzione personalizzata simile a mysql_real_escape_string per l'escape delle variabili stringa.

    Per le variabili il cui valore aspettato è un intero ti consiglio il type casting con (int), per esempio:

    Codice PHP:
    $idriparazione = isset($_GET['id_riparazione']) ? (int)$_GET['id_riparazione'] : 0
    e mentre che ci sei, usa isset, per evitare di ricevere warning.
    Fammi sapere.
    Ciao

  3. #3
    Occhio che il carattere di escape e' il backslash \\ e non lo slash //

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Non posso utilizzare la funzione mysql_real_escape_string visto che il db gira su sql server 2000.

    Ho già provato con addslashes ma niente da fare, il db me lo toglie in automatico e va in errore sempre sulle virgolette.

  5. #5
    Originariamente inviato da Bartjsp
    Non posso utilizzare la funzione mysql_real_escape_string visto che il db gira su sql server 2000.

    Ho già provato con addslashes ma niente da fare, il db me lo toglie in automatico e va in errore sempre sulle virgolette.
    prova a postare una stringa completa di quelle che ti vanno in errore ottenuta pero' con la stampa della query stessa.

    echo $sql;

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Originariamente inviato da Razorblade
    So che non usi mysql, però potresti crearti una funzione personalizzata simile a [...]
    Forse non ti è saltata all'occhio questa parte...

    Comunque si, posta un esempio di stringa che genera errore.

    Ciao

  7. #7

    Soluzione

    Leggendo in giro ho scoperto che microsoft durante la creazione della query sql vuole passati due aprici.

    Eccome la soluzione:
    str_replace("'", "''", $dato);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.