Visualizzazione dei risultati da 1 a 8 su 8

Discussione: INSERT con SqlServer

  1. #1

    INSERT con SqlServer

    perchè con sqlServer questo script non funziona?

    codice:
    $_POST['termine'] =
    addslashes(stripslashes($_POST['termine']));
    
    mssql_query("INSERT INTO glossario VALUES
    ('$_POST[url]', '$_POST[termine]', '$_POST[significato]')");
    o meglio, se $_POST['termine'] contiene un testo normale l'inserimento funziona, ma se il testo contiene un apice (ad esempio la parola "l'altro" restituisce un errore:

    Warning: mssql_query(): message: Line 1: Incorrect syntax near 'altro'. (severity 15)

    La stessa sintassi con mysql funziona bene

  2. #2
    Utente di HTML.it L'avatar di iox84
    Registrato dal
    May 2004
    Messaggi
    754
    L'escape di sqlServer dovrebbe essere il carattere ' per gli apici singoli e " per il carattere corrispettivo, quindi invece di
    codice:
    $_POST['termine'] = addslashes(stripslashes($_POST['termine']));
    mi sa che devi utilizzare
    codice:
    $_POST['termine'] = str_replace("'", "''", $_POST['termine']);
    per gli apici singoli
    La fortuna e' cieca ma la sfiga ci vede benissimo
    Comprarselo o farselo di legno

  3. #3

    funziona.

    Però mi si ripropone il problema quando cerco di selezionare i campi facendo un confronto:

    codice:
    $sel_elenco = 
    "SELECT * FROM tab WHERE 
    (termine='".$gruppo['termine']."' 
    AND titolo != '0') ORDER BY id";
    Ho provato a cambiare la sintassi in mille modi ... mi manca la 1001 .. quella giusta

  4. #4
    Utente di HTML.it L'avatar di iox84
    Registrato dal
    May 2004
    Messaggi
    754
    Prova con

    codice:
    $sel_elenco = 
    "SELECT * FROM tab WHERE 
    (termine='".str_replace("'", "''", $gruppo['termine'])."' 
    AND titolo != '0') ORDER BY id";
    La fortuna e' cieca ma la sfiga ci vede benissimo
    Comprarselo o farselo di legno

  5. #5
    Ma pensa te !!!

    Ero convintissimo di aver provato anche quello .. anzi, mi sembrava fosse stata la prima cosa che ho fatto !


    Grazie mille: ti devo una bevuta

  6. #6
    Utente di HTML.it L'avatar di iox84
    Registrato dal
    May 2004
    Messaggi
    754
    Ok, allora ti aspetto per la bevuta quando passi da Verona

    La fortuna e' cieca ma la sfiga ci vede benissimo
    Comprarselo o farselo di legno

  7. #7
    Son ancora qui a rompere ...
    (altro che bevuta !)

    Se recupero i dati da inserire in un form per modificare il testo il codice dovrebbe essere così ... ? ... ma non funziona ..

    codice:
    echo '<td><textarea name="significato" rows="4" cols="40">'
    .str_replace("'", "''", $gruppo['termine'])
    '</textarea></td>
    
    ';

  8. #8
    Come non detto: avevo il problema quando il testo conteneva sia apici che virgolette.

    Credo che la soluzione più semplice sia quella di sostituire le virgolette prima di inserire il testo nel dbase:

    codice:
    $testo = str_replace('"', '&quot;', $testo);

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 © 2024 vBulletin Solutions, Inc. All rights reserved.