Log in

View Full Version : Calling in a external database query


Killkenny
02-08-2005, 08:52 AM
Hi,

I'm really new to PHP so I'm sorry if any of these questions are really dumb.

I am trying to check weather people registering on my site are part of my current database. So what I have done is the following:

1. I have added two fields to the registration template. User ID number and User Membership number.

2. I have added the following code to register.php:

// Custom check for membership
require_once('./includes/functions_membership.php');
if (!check_membership($_POST['memberid'], $_POST['membernumber']))
{
$errors[991] = "Invalid membership information given, please check.";
}

3. I then created a file called functions_membership.php. And put the following code in it... (I'm pretty sure this is where you will all start laughing at me :) )

<?php
error_reporting(E_ALL & ~E_NOTICE);

function check_membership($membershipID, $membershipnumber)
{

$SAIMClink = mysql_connect( "localhost", "myUsername", "myPassword" );
if ( ! $SAIMClink ) {
die ( "Couldn't connect to MySQL: ".mysqlerror() );
}

mysql_select_db( "saimc", $SAIMClink )
or die ( "Couldn't connect to MySQL: ".mysqlerror() );

$result = mysql_query ( "SELECT name FROM users WHERE ID = '$membershipID' AND certificateNumber = 'membershipnumber'" );
$num_rows = mysql_num_rows( $result );


$i=0;
while ($i < $num_rows) {
$NameExists = mysql_result ( $result, $i, "name" );
$i++;
}
mysql_close( $SAIMClink );

if ($NameExists != ""){
return true;
}else{
return false;
}

}

?>

When I try to go through the registration process I get the following errors:

Warning: mysql_query(): 1 is not a valid MySQL-Link resource in /includes/db_mysql.php on line 212

Warning: mysql_error(): 1 is not a valid MySQL-Link resource in /includes/db_mysql.php on line 357

Warning: mysql_errno(): 1 is not a valid MySQL-Link resource in /includes/db_mysql.php on line 358

There seems to have been a slight problem with the BB Test Forum Database.
Please try again by pressing the refresh button in your browser.

An E-Mail has been dispatched to our Technical Staff, who you can also contact if the problem persists.

We apologise for any inconvenience.

Warning: mysql_query(): 1 is not a valid MySQL-Link resource in /includes/db_mysql.php on line 212

Warning: mysql_error(): 1 is not a valid MySQL-Link resource in /includes/db_mysql.php on line 357

Warning: mysql_errno(): 1 is not a valid MySQL-Link resource in /includes/db_mysql.php on line 358

Any ideas where I might be going wrong?

Marco van Herwaarden
02-08-2005, 09:06 AM
I don't see hwere you go wrong right now.

Nut please remove your license number from the php code.

PS Are you sure that thise code snippet is causing it?

Andreas
02-08-2005, 09:08 AM
@Killkenny
Please do not post files that contain your license number, as this violates the license agreement and our rules.
Thank you.

Killkenny
02-08-2005, 09:14 AM
@Killkenny
Please do not post files that contain your license number, as this violates the license agreement and our rules.
Thank you.
Sorry about the license number... My bad! Won't happen again.

I can't see what else the problem could be.

I removed the code in the register.php file and the registration went through fine...

Any ideas?

Andreas
02-08-2005, 09:21 AM
Do you use the same username/password for the other database as for vBulletin?
Then this is the problem:
The code in check_membership will use the current connection (for vBulletin) - but you close the connection, so it won't be available in vBulletin any longer after the call.

Try

$SAIMClink = mysql_connect( "localhost", "myUsername", "myPassword", true );


This should create a new link, even if user/password are the same.

Another approach would be to use vBulletins DB-Class, and change the DB upon call end return.

Or use a different user/password.

Killkenny
02-08-2005, 10:08 AM
Do you use the same username/password for the other database as for vBulletin?
Then this is the problem:
The code in check_membership will use the current connection (for vBulletin) - but you close the connection, so it won't be available in vBulletin any longer after the call.

Try

$SAIMClink = mysql_connect( "localhost", "myUsername", "myPassword", true );


This should create a new link, even if user/password are the same.

Another approach would be to use vBulletins DB-Class, and change the DB upon call end return.

Or use a different user/password.
Alright. After a whole lot of testing and changing of code I found out that:


// Custom check for membership
require_once('./includes/functions_membership.php');
if (!check_membership($_POST['memberid'], $_POST['membernumber']))
{
$errors[991] = "Invalid membership information given, please check.";
}


Should in fact be:


// Custom check for membership
require_once('./includes/functions_membership.php');
if (check_membership($_POST['memberid'], $_POST['membernumber']))
{
$errors[991] = "Invalid membership information given, please check.";
}


I removed the "!" at the begining of the function, if you didn't catch it.

However it was the username and password stuff that was stopping me from accessing the DB. So thanks SO much for your help. I would never had guessed that was the problem!

So I'm sorted and happy and my programme is working great and all is right with the world!

Again thanks for your help!