• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 562
  • Last Modified:

MSSQL query changed to MySQL shows not valid mysql resource

Alright

I worked on this for hours and I'm stuck. Below I pasted the script from a working MSSQL login which I changed to use with MySQL. I know that there are syntax differences and the hours I spent was replacing some of them in this script but I've got no where.

I keep getting invalid mysql result resource. Usually on ($result=mysql_query($sql);) however it changes to other lines depending the script.

A fix would be great I'm assuming its a quick thing I cant believe I cant get it working from my MySql book and online!
session_start();
  $user="##";
  $host="##";
  $password="##";
  $database="##";
 
mysql_connect("$host", "$user", "$password")or die("cannot connect");
mysql_select_db("$database")or die("cannot select DB");
 
$sql="SELECT * FROM users WHERE username='$_POST[myusername]' AND pass='$_POST[mypassword]'";
$result=mysql_query($sql);
 
// mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
 
if($count==1) //Login details were found so auth
{

Open in new window

0
Ryan Bayne
Asked:
Ryan Bayne
  • 3
  • 3
1 Solution
 
nanharbisonCommented:
If you are using variables for MySQL functions, don't use quotes. So change
mysql_connect("$host", "$user", "$password")
to
mysql_connect($host, $user, $password)
and change this:
$sql="SELECT * FROM users WHERE username='$_POST[myusername]' AND pass='$_POST[mypassword]'";

to this:
$sql="SELECT * FROM users WHERE username='".$_POST['myusername']."' AND pass='".$_POST['mypassword']."'";

because if you are using post and get variables you have to separate them from the code with a double quote and a dot. I also think you need to add single quotes to $_POST[myusername] inside the brackets, the way I did it in the changed version. I always forget if you HAVE to do it.
0
 
nanharbisonCommented:
the use of double and single quotes, and having to set off variables that are in the form $_POST[] and $_SESSION[], etc always slays me!
0
 
Ryan BayneWordPress DeveloperAuthor Commented:
Well your changes are correct and as you will see in my code below I needed to change the quotes.

I've arrived at a point I did reach myself prior to this question but ended up starting again maybe this time you can help me.

// mssql_num_row is counting table row
$count=mysql_num_rows($result);

That line results in... mysql_num_rows(): supplied argument is not a valid MySQL result resource in
I did think there was a different way to do this with mysql but I'm thinking I dreamed that up!

ideas? thanks so far
<?php
//Processes attempted login
//Retrieves users access permission and fowards to required page depending on that users authorisation
session_start();
 
  $user="##";
  $host="##";
  $password="##";
  $database="##";
 
mysql_connect($host, $user, $password)or die("cannot connect");
mysql_select_db("$database")or die("cannot select DB");
 
$sql='SELECT * FROM users WHERE username="$_POST[myusername]" AND pass="$_POST[mypassword]"';
$result=mysql_query($sql);
 
// mssql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
 
		
if($count==1 && $level=='closed')//Send to account closed page
{
	$_SESSION['auth']="yes";
	header("location: index.php?pagecell=closed.php");
}
else if($count==1 && $level=='master')//Send to web master page
{
	$_SESSION['auth']="yes";
	header("location: index.php?pagecell=admin/webmaster.php");
}
else if($count==1 && $level=='admin')//Send to basic admin area
{
	$_SESSION['auth']="yes";
	header("location: index.php?pagecell=closed.php");
}
else if($count==1 && $level=='member')//Send to member page
{
	$_SESSION['auth']="yes";
	header("location: index.php?pagecell=closed.php");
}
else
{
	header("location: index.php?cell=pagecells/loginfail.php");
	exit();
}
 
?> 

Open in new window

0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
Ryan BayneWordPress DeveloperAuthor Commented:
I think thats it done. Had to mess around with the quotes and stuff a bit more. Actually I better review what I done I cant remember lol

THANKS
<?php
//Processes attempted login
//Retrieves users access permission and fowards to required page depending on that users authorisation
session_start();
 
  $user="root";
  $host="localhost";
  $password="25130217cmt";
  $database="WebTG2008";
 
mysql_connect($host, $user, $password)or die("cannot connect");
mysql_select_db("$database")or die("cannot select DB");
 
$sql='SELECT * FROM users WHERE username="$_POST[myusername]" AND password="$_POST[mypassword]"';
 
$result=mysql_query($sql);
 
// mssql_num_row is counting table row
$count = mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
 
		
if($count==1 && $level=='closed')//Send to account closed page
{
	$_SESSION['auth']="yes";
	header("location: index.php?pagecell=closed.php");
}
else if($count==1 && $level=='master')//Send to web master page
{
	$_SESSION['auth']="yes";
	header("location: index.php?pagecell=admin/webmaster.php");
}
else if($count==1 && $level=='admin')//Send to basic admin area
{
	$_SESSION['auth']="yes";
	header("location: index.php?pagecell=closed.php");
}
else if($count==1 && $level=='member')//Send to member page
{
	$_SESSION['auth']="yes";
	header("location: index.php?pagecell=closed.php");
}
else
{
	header("location: index.php?cell=pagecells/loginfail.php");
	exit();
}
 
?> 

Open in new window

0
 
Ryan BayneWordPress DeveloperAuthor Commented:
oops put database details. dont worry its a test db only on testing environment with no data
0
 
nanharbisonCommented:
So you got the mysql_num_rows to work? You get that error when there is something wrong with the query or there is no data returned. You might be better off saying:
if ($count = mysql_num_rows($result)) {

      do something

}


0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now