[nycphp-talk] naming identifiers
lists at nopersonal.info
lists at nopersonal.info
Sun Aug 30 01:18:58 EDT 2009
Hi Dan,
Daniel Convissor wrote:
> Your big mistake was delimiting the identifiers when creating the table.
>
> "Identifiers" are table names, field names, index names, etc. The
> "delimiter" for these is "`" in MySQL. When you use the delimiter around
> the identifiers, the database allows you to create nearly any name you
> can possibly think of, including "reserved words." Reserved words are,
> well words that the system has reserved for its own internal use, so
> should not be utilized by users. As you've now discovered, delimiting
> identifiers when creating tables is the genesis of a world of pain.
This is really important stuff and I don't remember it being covered in
any of my "beginner" books. Grrr.
> If you tried to create a table with a name called "desc" in it without
> delimiting it, MySQL would have complained to you up front, saving you
> the agony.
The thing is, I have no idea how I managed to delimit the identifiers. I
created my everything using phpMyAdmin--could that have been the
culprit? The reason I ask is because I just tried it again and MySQL
didn't complain. Since you said it should be complaining, I decided to
attempt the same using a trial version of Navicat that I downloaded a
few days ago. Sure enough, MySQL threw a syntax error right away. WTF?
If you tell me that I should be talking to MySQL from the command line
I'm going to jump out the window forthwith. ;)
>> Or like the time (very recently) when I was converting timestamps to
>> calculate the number of days between two given dates. I used the
>> number_format() function...
>
> Uh, just making sure... Did you convert the timestamps via
> number_format() then do the math? Ouch. This is the kind of stuff the
> date functions, like date_diff(), etc, in MySQL and PHP are for.
> Faster, more accurate, easier. Then format the result.
Actually, my description wasn't very accurate. I guess I sort of did it
in the middle--after the math to calculate the number of days between
"today" and the expiration date, but before telling PHP to check for a
specific number days See below). Where you now see round() is where I
was previously using number_format():
$todays_date = date("Y-m-d");
$today = strtotime($todays_date);
$exp_date = strtotime($exp_date);
$diff = ($exp_date - $today);
$num_days = ($diff / 86400);
$num_days = round($num_days, 0);
$exp_date = date('m-d-y', $exp_date);
if ($num_days <= 60 && $num_days >= 46) {
$exp_date = '<span class="exp60Days">'.$exp_date.'</span>
} //...and so on
In MySQL the exp_date field data type is DATE. I strongly suspect that
I'm handling my dates in the most verbose & confusing way possible, and
I know for a fact that I didn't properly normalize my tables. IOW, I
managed to make things work, but it's a big mess.
I'm currently trying to redo everything, but with limited success as
trying to grope my way through the fog of my inexperience results in
frequent rounds of tripping & falling face-first into the mud. I
eventually figure stuff out and inch my way up a little, but it's a
slow, painful climb.
Sometimes I sort of feel like Sisyphus. *sigh*
I'm going to go check out the date_diff() function...
Bev
More information about the talk
mailing list