Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Stringhe Table

  1. #1
    Utente di HTML.it L'avatar di Raayes
    Registrato dal
    Jun 2012
    Messaggi
    55

    Stringhe Table

    Codice PHP:
    /* -- Creiamo la Tabella -- */
                
    mysql_query("CREATE TABLE IF NOT EXISTS " $username "." $name " (
                id INT(10) NOT NULL auto_increment,
                name VARCHAR(255) default NULL, 
                username VARCHAR(255) default NULL, 
                date VARCHAR(20) default NULL,
                ip VARCHAR(20) default NULL,
                filename VARCHAR(300) default NULL,
                PRIMARY KEY ( id ) )"
    ) or die (mysql_error()); 
    Problema:
    se $name è per esempio: "Table Name", come potete notare mi da errore per la spaziatura.

    Ciò che vorrei chiedervi:
    1. Come faccio a venire in contro alla spaziatura?
    2. Come faccio ad isolare l'Username e a vietare l'uso del carattere "." (punto), cioè, nel caso io ho:
    $username . "." . $name ---> Pippo.tablename
    Catturare quindi, cio che c'è prima del punto?

  2. #2
    per quanto ne so io i valori delle variabili delle query non li devi inserire così ma semplicemente fra '......'

    codice:
    $nome_tabella = $username.'.'.$name; 
    mysql_query("CREATE TABLE IF NOT EXISTS '$nome_tabella' ( ....)");
    per gli spazi fai un str_replace e cambi gli spazi in _


  3. #3
    nei nomi dei database, tabelle, colonne, chiavi e via dicendo, dove devi usare gli spazi, basta utilizzare le "quote" supportate dall'RDMBS.
    In MySQL puoi usare i backtick (questi per intenderci ` ) oppure, se non ricordo male, ma non li uso, anche gli apici singoli e/o doppi ... in pratica Table Name diventa `Table Name`

    Detto questo, ti do un paio di utili consigli:
    - evita gli spazi, diventano una seccatura perché basta una svista e la query va a farsi benedire;
    - i nomi delle tabelle e dei database falli sempre minuscoli, mysql crea una serie di file su disco e mentre su windows non c'è differenza perché il layer di gestione dei file di windows è case insensitive su linux (così come su mac os x, freebsd e via dicendo) è l'inverso, è case sensitive, e quindi c'è distinzione tra una tabella che si chiama Bollette ed una tabella che si chiama bollette;
    - l'estensione mysql è sconsigliata ed a breve, per fortuna, verrà deprecata, ti consiglio di usare PDO ( www.php.net/pdo e www.php.net/pdo_mysql ) che oltre ad essere performante supporta i Server Side Prepared Statements, ovvero ti permette di mettere i ? nelle query al posto dei valori occupandosi, in automatico, del casting del valore, se indicato, dell'inserimento degli apici, dell'escaping e via dicendo ... senza considerare poi un'aumento prestazionale nel caso di query ripetute in quanto i prepared statements lato server vengono "precompilati" (ovvero vengono pre-interpretati e quindi quando si lancia la query il server rdbms sa già cosa fare);
    - per finire, la prima riga di codice, ovvero quella dove per il nome del database e per il nome della tabella utilizzi il nome utente ed il full name dell'utente (immagino), mi fa un po paura ... perché dovresti fare una cosa del genere? intendo dal punto di vista progettuale/implementativo/tecnico

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.