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

    Testo breve nel database si; testo lungo nel database errore di sintassi.....perchè?

    Ciao ragazzi.
    Cosa stranissima, non mi è mai capitato. Stavo scrivento la mia solita news dopo cena e mi accorgo che se ci scrivo troppo quando eseguo la query che scrive nel database mi da un errore di sintassi:

    You have an error in your SQL syntax near 'miotesto.','utente','2006-02-03')' at line 1

    Perchè?

    Mentre se ci scrivo poco la invia senza problemi....Mi potete dare una mano?

    La tabella nel database è mediumtext è ora ho provato a metterla index ma non va lo stesso....

    Aiuto!

  2. #2
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    non è che niente niente hai degli apici nel testo e non usi addslashes() o mysql_escape_string() ?
    "Nei prossimi tre anni col mio governo vogliamo vincere anche il cancro, che colpisce ogni anno 250.000 italiani e riguarda quasi due milioni di nostri concittadini"

  3. #3
    Originariamente inviato da chris
    non è che niente niente hai degli apici nel testo e non usi addslashes() o mysql_escape_string() ?
    No, il codice per lo script è questo:

    Codice PHP:
    // connessione al db
    require('config.inc.php');

    //recupero i dati
    $titolo=$_POST['titolo'];
    $autore=$_POST['autore'];
    $testo=$_POST['testo'];

    //prendo la data attuale
    $data=date("Y-m-d");

    //modifico il testo
    $testo stripslashes($testo);
    $testo nl2br($testo);
    $testo htmlspecialchars($testo);
    $testo ereg_replace("<br />","
    "
    ,$testo);
    $testo ereg_replace("<br>","
    "
    ,$testo);

    //creo la query
    $sql="INSERT INTO news (id,titolo,testo,autore,data) VALUES('','".$titolo."','".$testo."','".$autore."','".$data."')";

    //eseguo la query 
    $query=mysql_query($sql) or die ("Impossibile inserire la news ".mysql_error());

    //chiudo il database
    mysql_close(); 
    Che sbaglio?

  4. #4
    Aiuto ragazzi!

  5. #5
    ma la domanda che ti ha fatto chirs l'hai capita?

    ti ha chiesto se avevi degli apici del testo ... ed hai risposto no

    ma io li non ci vedo ne addslashes, anzi li togli, e ne mysql_escape_string

    comunque l'errore che tu ricevi è su titolo, non su testo

    fatti stampare la query modificando
    $query=mysql_query($sql) or die ("Impossibile inserire la news ".mysql_error());

    in

    $query=mysql_query($sql) or die ("FATAL ERROR: Impossibile inserire la news - " . mysql_error() . "
    Query: " . $sql . "

    ");

  6. #6
    Ah, non vevo capito bene la risposta che mi aveva dato, scusate!

    Adesso ci sono riuscito aggiungendo addslashes.

    Un'ultima cosa, ho inserito nella pagina anche un collegamento in html:

    testo

    Ma quando visualizzo la news, mi visualizza il codice al posto del collegamento. Devo eliminare qualche cosa tra:

    Codice PHP:
    $testo htmlspecialchars($testo);
    $testo ereg_replace("<br />","
    "
    ,$testo);
    $testo ereg_replace("<br>","
    "
    ,$testo); 
    Probabilmente è questo vero?

    Codice PHP:
    $testo htmlspecialchars($testo); 
    Attendo vostre risposte, grazie ancora e scusate!

  7. #7
    tu usi htmlspecialchars quindi è normalissimo

    ti conviene piuttosto fare un'altra cosa ... con un str_replace sostituisci tutti gli <a href=....> </a> in testo e poi lo riconverti in html

    non hai altri modi

    altrimenti puoi fare quello che fai per adesso con i br

    $testo = preg_replace("/&lt;a(.*?)href=(.*?)&gt;(.*?)&lt;\/a&gt;/","<a$1href=$2></a>$3</a>", $testo);


    mentre le br puoi trasformarle in
    $testo = preg_replace("/&lt;br ?\/?&gt;/","
    ",$testo);

    in questo modo prende
    poi
    poi ancora <br/ >e per finire
    e li converte TUTTI in
    cosa che puoi fare tranquillamente

    PS: quando usi le espressioni regolari usa le PREG perché sono infinitamente più veloci e leggere rispetto alle ereg ^^

  8. #8
    Ok, ci proverò, grazie ancora

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.