2010-04-04 6 views
0

chaque requête de recherche est enregistré dans ma base de données, mais je veux limiter la Chracterlength pour un seul mot: odisafuoiwerjsdkle -> longueur trop -> Ne pas écrire dans la base de donnéesMYSQL: Limite de mots Longueur pour MySql Insérez

mon code est en fait:

$search = $_GET['q']; 


    if (!($sql = mysql_query ('' . 'SELECT * FROM `history` WHERE `Query`=\'' . $search . '\''))) { 
     exit ('<b>SQL ERROR:</b> 102, Cannot write history.'); 
     ; 
    } 

    while ($row = mysql_fetch_array ($sql)) { 
     $ID = '' . $row['ID']; 
    } 

    if ($ID == '') 
    { 
     mysql_query ('' . 'INSERT INTO history (Query) values (\'' . $search . '\')'); 
    } 

    if (!($sql = mysql_query ('SELECT * FROM `history` ORDER BY `ID` ASC LIMIT 1'))) 
    { 
     exit ('<b>SQL ERROR:</b> 102, Cannot write history.'); 
     ; 
    } 

    while ($row = mysql_fetch_array ($sql)) { 
     $first_id = '' . $row['ID']; 
    } 

    if (!($sql = mysql_query ('SELECT * FROM `history`'))) 
    { 
     exit ('<b>SQL ERROR:</b> 102, Cannot write history.'); 
     ; 
    } 
+1

Pourquoi y a-t-il ';' après les lignes vides et '''. 'avant les requêtes? En outre, vous êtes vulnérable aux injections SQL, à moins que vous ne traitiez $ search d'une manière que vous n'avez pas montrée. – zneak

Répondre

0

une option serait en utilisant un déclencheur dans la table. Mais, si vous attendez beaucoup de trafic sur votre moteur de recherche, il peut ne pas évoluer très bien. Donc, l'utilisation de contraintes côté client (PHP dans votre cas) pourrait être un meilleur choix.

+0

je vous remercie pour la réponse, avez-vous une bonne méthode pour moi? ou comment faire avec php? – elmaso

+0

'if (strlen ($ search)> 20) {exit ('Chaîne de recherche trop longue');}' – cmptrgeekken