Showing posts with label MySQL. Show all posts
Showing posts with label MySQL. Show all posts

Monday, June 29, 2009

Back and working with PHP/MySQL and some Javascript

Using one of those free hosting sites that allow PHP/MySQL - http://www.atbhost.com in particular - I've started working on php scripts. I've also found Javascript to be helpful.

Sunday, April 29, 2007

Testing MySQL: Installing MySQL, configuring php.ini and removing deprecated tags.

Previously, I was testing MySQL and could not get a page to load at all. I was receiving the error message:
PHP Fatal error: Call to undefined function mysql_connect()

I added a couple extensions in php.ini and just now found a new error message appeared.
PHP Warning: PHP Startup: Unable to load dynamic library './php_mysql.dll'
- The specified module could not be found.\r\n in Unknown on line 0

It was not looking in the right directory, rather I never specified where to look. Now I have tried setting the extension directory with extension_dir = "c:\php\ext" in php.ini, I have received a new error message. (I'm getting somewhere!)
PHP Fatal error: Call to undefined function mysql_create_db() in
C:\\myserver\\test_mysql.php on line 33

I have a feeling I'll be doing a lot of php.ini configuring. After searching for the previous error in google I came across a list of emails in the archives of Neohapsis.com where someone mentioned that mysql_create_db() is deprecated. So much for using older tutorials. I searched for mysql_create-db() deprecated on Google and came across a comment on the manual that says mysql_query() should be used instead.

I went back into my test file and changed the two instances of mysql_create_db to mysql_query and finally something appears on the page. Unfortunately the variables are not appearing to be saved. Oh error looooog!,
PHP Warning: mysql_fetch_array(): supplied argument is not a valid MySQL
result resource in C:\\myserver\\test_mysql.php on line 66

Fetch doesn't have anything to fetch so it is reporting an error. I think I'll find someone elses file to test MySQL with (ignores the little voice saying "Make one yourself you lazy oaf")

Testing MySQL


I decided to run a test on MySQL to see if it has been configured properly.




WebThang's tutorial has a test file to use on the end of its MySQL installation tutorial that should work fine (the only change I made was changing shorthand error):




Cut and Paste the following code into 'notepad' and save it as 'c:\web\test_mysql.php'

<?php
/************************************************************
this script runs only once, it then drops the database before
mysql connection is closed.
************************************************************/


/***************************************************
string values passed on to the following 5 variables.
two of each are assigned to 'ice' and the rest three
tag along into 'mysql_connect'
***************************************************/
$iceCreamOne = "Vanilla"; // Type One Ice Cream
$iceCreamTwo = "Cookie Dough Ice Cream"; // Type Two Ice Cream
$host = "localhost"; // hostname...in our case localhost
$username = "root"; // root is our default
$password = "ranginyoka31"; // your mysql password please


//open connection to the MySQL database server.
$connection = mysql_connect($host,$username,$password);
//if connection fails, display the error involved
if ($connection == false){
echo mysql_errno().": ".mysql_error()."<BR>";
//echo("Your username or password is not correct.");
exit;
}


/************************************************
After supper we will have two kinds of desserts
create the database then select it. Two functions
called mysql_create_db() & mysql_select_db()
if statements to check success of create & select
************************************************/
$create_success = mysql_create_db("aftersupper");
if($create_success)echo("<b><font color=\"blue\">create database: success!</font></b><br>");
$select_success = mysql_select_db("aftersupper");
if($select_success)echo("<b><font color=\"blue\">selected the created database: success!</font></b>");


/*************************************************************
your choice for 2 desserts
for me I like vanilla[iceCreamOne] & cookie dough[iceCreamTwo]
*************************************************************/
mysql_query("CREATE TABLE desserts(iceCreamOne VARCHAR(25),
iceCreamTwo VARCHAR(25))");


/**********************************************************
i put my two favorite ice cream types into table desserts: vanilla & cookie dough
remember im using variables that have been assigned with strings up there ^^^.
*********************************************************/
mysql_query ("INSERT INTO desserts (iceCreamOne, iceCreamTwo) VALUES
('$iceCreamOne', '$iceCreamTwo')");


/********************************************************
as long as there is information in the table keep printing.
i have two values in table 'desserts', both rows are passed to variable 'result'
**********************************************************/
$result = mysql_query ("SELECT * FROM desserts");


//checking to see that select was successfull
//if ($result){echo "<h2>Successfully selected from table desserts!</h2>\n";}


//assign the number of rows from variable $result to $numOfRows
//$numOfRows = mysql_num_rows ($result);


//for ($i = 0; $i < $numOfRows; $i++)
//{
$row = mysql_fetch_array($result);
print ("<h3>My 2 most favorite Ice Cream are:</h3><br>\n");
print($row["iceCreamOne"]." and ");
print($row["iceCreamTwo"]. "<br>");
// }


//Database gets dropped. You can comment the line below if you wish to keep the database
mysql_query("DROP DATABASE aftersupper");


//close the connection to the db with the particular user :: $username
mysql_close();
?>





So I tried to run the program and ended up getting a blank page. I looked at the MainFrame.err file and didn't see anything peculiar. I then looked at Apache's access log and found nothing.




The problem appeared in Apache's error log:


[Sun Apr 29 11:30:43 2007] [error] [client ###.#.#.#] PHP Fatal error: Call to undefined function mysql_connect() in C:\\myserver\\test_mysql.php on line 19




I searched for "PHP Fatal error: Call to undefined function mysql_connect()" on Google and found this thread on MySQL. At the top of the thread the first poster has the same problem as many others do. At the end of the thread the poster says the solution is located in the second to last post (a lot of pointing going on). That thread finally leads me to siteinaweek.com which finally makes me say "Oh, duh".




I forgot to add extensions for MySQL in php.ini


I just removed the semi-colin before "extension=php_mysql.dll" like so
and removed it before "extension=php_mysqli.dll" as well.
I stopped and restarted the Apache server before testing test_mysql.php and again received a blank page. I'll work on this some more later.

Saturday, April 28, 2007

Installing MySQL

So I began by unzipping zip file into a folder of the same name. It really doesn't matter where it is unzippped. I now have setup.exe ready to run.

After it goes through a little song and dance preparing installation files and preparing to install it shows me a window, MySQL Server 5.0 - Setup Wizard

I click next> select custom (because I want to install in in c:/mysql instead of the default directory in Program Files)> click next> click change directory> enter c:/mysql under Folder name: > Click OK> click Next> click Install

After installation "Configure the MySQL Server Now" should be checked and I'll just click Finish and move on.

Hooray My MySQL is downloaded!

The moment of truth has arrived.

Before I even attempt installing it though I have to check the integrity of the file. To do this I am using md5.exe a program created by developed by Ron Rivest of the MIT Laboratory for Computer Science and RSA Data Security, Inc.

Md5 can validate the integrity of a downloaded file because the algorithm creates a different signature for two different files. If even one byte is changed in a file it will give a different signature. MySQL shows the signature id under the download link like so.


Hmm, I think I'll be uploading my pictures somewhere other than blogger. Is that blurred? Anyway, the second one is is what I downloaded. Below 5.037, 36.7M, etc there is a line that says MD5: b909c16... This is the line that md5.exe must return to show you have a file of pure integrity! (If only we could do the same for politicians, ahem) So the next step after downloading MySQL is to download MD5: Command Line Digest Utility.

After it has been downloaded it has to be unzipped (I'm assuming it was downloaded as a zip and not a tar. I use zips, never used tar). I simply unzipped it into c:/md5. I then placed the downloaded mysql-yada-yada-yada.zip in the c:/md5 folder along with md5.exe. Next we go to the command line.

In Microsoft XP, where they officially killed DOS, command prompt is used. It can be opened by following: Start>All Programs>Accessories>Command Prompt

If you've never used it don't worry it is actually quite simple (I used to have to use it every day because all I had was DOS long ago :-(!)

I started in the md5 directory but I wanted to show how change directory (cd\) works.
So I entered cd\ to return to c:\
Next I entered cd\md5 to change the directory to c:\md5
Then I entered md5 (it runs md5.exe) and entered the file name I want to check after it.
It returns a line, the signature for the downloaded file. I compare that line to the line on mysql's website and (no ellipse this time) they match!

On to installation!