[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