NYCPHP Meetup

NYPHP.org

[nycphp-talk] Database creation (YAML VS hard coded PHP)

P. Ju (朱漢璇) pjlists at pobox.com
Sun Oct 28 12:13:30 EDT 2007


Hi Ben,

Is it a requirement that you use PHP? MySQL database
creation/modification can be scripted by running mysql with the -e
switch and passing it a file containing SQL commands. I also add -vvv
to give me verbose output.

PJ

On 10/28/07, Ben Sgro (ProjectSkyLine) <ben at projectskyline.com> wrote:
>
>
> Hello all,
>
>
> #1 Thanks for the ideas on CSS (my last question). I still haven't been able
> to invest the type of time
> I would like to play around with the code, but I will. I got the CSS Mastery
> book and I've got an APress
> book on HTML/CSS design patterns. Both look promising.
>
> I started off doing db deployment code in a seperate file, say createdb.php
> that I would run from
> the URL.
>
> include ('PROS.php');
>     include ('../LIBRARY/DBAS.php');
>
>     DBAS_InitDBHandle(PROS_SQLInfo( ), 'PROS.php', $db);
>     DBAS_MySQLUseDB(constPROSDBStr, $db);
>
>     $tableSet = DBAS_FetchTables(constPROSDBStr, $db);
>     if ( @ !$tableSet[constContentStr])
>     {
>         error_log("createdb.php: creating 'content' table");
>         $sqlStr = "CREATE TABLE content "
>                 . "(id int(11) NOT NULL auto_increment,"
>                 . " display_on    int(11) default 0,"
>                 . " title         varchar(64)   default '',"
>                 . " body          text(8192) default '',"
>                 . " thumb_img     varchar(64)   default '',"
>                 . " page_img_1    varchar(64)   default '',"
>                 . " page_img_2    varchar(64)   default '',"
>                 . " img_1_caption  varchar(64)   default '',"
>                 . " img_2_caption  varchar(64)   default '',"
>                 . " img_1_alt      varchar(64)   default '',"
>                 . " img_2_alt      varchar(64)   default '',"
>                 . " page_position varchar(32)   default '',"
>                 . " link          varchar(64)   default '',"
>                 . " primary key(id)"
>                 . ')';
>         DBAS_MySQLQuery($sqlStr, $db);
>     }
>
> After a while, that was kinda of a pain and I moved to something internal to
> the index.php?action=create_database file
> and cleaned up my database object code.
>
>         /* Comments table. */
>
> $dbObject->DatabaseCreateTable(DATABASE_TABLE_COMMENTS);
>         $dbObject->DatabaseCreateField('comment_id',
> 'int(11)', 'NOT NULL',
>                                        'auto_increment');
>         $dbObject->DatabaseCreateField('video_id',
> 'int(11)',     DEF_0);
>         $dbObject->DatabaseCreateField('posted_time',
> 'varchar(32)', DEF_0);
>         $dbObject->DatabaseCreateField('posted_by',   $v64,
>          $defE);
>         $dbObject->DatabaseCreateField('comment',
> 'varchar(512)',$defE);
>         $dbObject->DatabaseCreateField('primary',
> 'key(comment_id)');
>         $dbObject->DatabaseCreateCommit(LOG_LEVEL_DEBUG);
>
> Which I used for a while and I liked it. Except its a lot to type for larger
> databases.
> So I started messing with YAML and I've got my code down to this:
>
> emails:
>     id:
>         type:    int(11)
>         default: not null
>         extra:   auto_increment
>     email:
>         type:    varchar(255)
>         default: default 0
>         extra:
>     contacted:
>         type:    tinyint(1)
>         default: default 0
>         extra:
>     primary:
>         type:    key(id, email)
>         default: ""
>         extra:
>
> Which I just feed into a method that creates the table. I have this code
> only execute
> when I pass a command line switch in, say php index.php -f db.yaml. If I
> don't have
> CL access then I'd have to move it to the URL.
>
> Do you all think agree this is a better direction ? What are some pitfalls I
> could run into
> doing db's this way?
>
> Thanks so much!
>
> - Ben
>
> Ben Sgro, President
> ProjectSkyLine - Defining New Horizons
> +1 718.487.9368 (N.Y. Office)
>
> Our company: www.projectskyline.com
> Our products: www.project-contact.com
>
> This e-mail is confidential information intended only for the use of the
> individual to whom it is addressed.
> _______________________________________________
> New York PHP Community Talk Mailing List
> http://lists.nyphp.org/mailman/listinfo/talk
>
> NYPHPCon 2006 Presentations Online
> http://www.nyphpcon.com
>
> Show Your Participation in New York PHP
> http://www.nyphp.org/show_participation.php
>


-- 
Patricia Ju
phj at pobox.com
+1-646-717-3871

success = fn(perseverance)



More information about the talk mailing list