[PHPwestoz] [OT] Relational SQL Databases
Nicolas Connault
nicou at sweetpeadesigns.com.au
Tue Feb 22 17:24:03 UTC 2005
> I get the Artist info and Album info automatically with a script.
> So I want to be able to minimise the number of querys.
That's fair enough if you're highly concerned about speed. Otherwise
it's OK to have three queries in one script, if you're dealing with
small amounts of information.
> So in PHP I have the variables $artist, $album, $song, $file
> I then want to do a 'INSERT INTO Artists SET Name=$artist'
That's not the right syntax. It should be "INSERT INTO Artists (`Name`)
VALUES ('$artist')" Check the syntax for these statements in the MySQL doc.
> and I want
> some more in that SELECT that only adds it if it isn't already in there.
> Then I need to get the ID for that artist so probably another select
> unless there is a quicker way.
Unfortunately I don't know any function in MySQL that lets you retrieve
the auto-increment ID of a field you just created. You normally have to
do another select, which is not hard if you do this: "SELECT ID FROM
Artists ORDER BY ID DESC LIMIT 1" This will give you the last created
ID, which normally would be the last record you created.
> Then a similar INSERT for the Album,
> once again I need to get the Album ID so that I can use it in the last
> INSERT which actually inserts the Song.
As above, another query. Remember that these queries will be very fast
since you are only selecting one field and only one record, and
searching a unique primary key.
>
> Then I also need to be able to a SELECT of the following format although
> now it won't work as the database is different.
> SELECT * FROM Songs WHERE Artist LIKE "A%"
> How would I write that one?
>
This one is easy: "SELECT Songs.* FROM Songs, Albums, Artists WHERE
Songs.AlbumID = Album.ID AND Album.ArtistID = Artist.ID AND
Artist.Artist LIKE 'A%' "
I would rename the Artist.Artist field to Artist.Name if I was you, it's
never good to name a field by the same name as the table.
More helpful?
Nicolas
More information about the PHPwestoz
mailing list