Page 1 of 1

Using $_Session-values with mysql?

Posted: Wed Sep 21, 2011 3:19 pm
by Nanonano26
Hello.

I am having trouble using session-variables when they are needed to receive data from a table.
If I put the variable $FirstName, between single or double quotes in attempt to get some data from a table players, I get an error saying:
Parse error: syntax error, unexpected T_VARIABLE... on the code-line I've commented.
If I skip the quotes around the $FirstName, I get en error on the next code-line, stating:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource.

Code: Select all

<?PHP
session_start();

  //putting variables from the session-array into local variables
$FirstName = $_SESSION['GameName'][0];
$LastName = $_SESSION['GameName'][1];
$GameName = $FirstName . " " . $LastName;
echo "$GameName";      //this is echoing normally, indicating that the code is working so far.

  //connecting to database
  mysql_connect(****, *****, *****) or die(mysql_error());
  mysql_select_db(****) or die(mysql_error());

  //extracting data from the result-array
  $result1 = mysql_query('SELECT Funds, Salory FROM Players WHERE FirstName="$FirstName" '); //here is some kind of trouble..
  $row1 = mysql_fetch_array($result1);

echo $row1['Funds'];
echo $row1['Salory'];

?>
Any ideas?

Re: Using $_Session-values with mysql?

Posted: Wed Sep 21, 2011 4:42 pm
by twinedev
You can only place variables inside of double quotes, not single quotes. (Single quotes also will not evaluate escaped characters like \n )

While you do have it in double quotes at first glance, keep in mind those quotes are part of the SQL statement, not the PHP code. You would need to do one of these two:

Code: Select all

$result1 = mysql_query('SELECT Funds, Salory FROM Players WHERE FirstName="'.$FirstName.'" '); 

Code: Select all

$result1 = mysql_query("SELECT Funds, Salory FROM Players WHERE FirstName=\"$FirstName\" "); 
Also, if you go the double quote route (second example above), you can directly use the $_SESSION if you want by wrapping it with { } 's

Code: Select all

$result1 = mysql_query("SELECT Funds, Salory FROM Players WHERE FirstName=\"{$_SESSION['GameName'][0]}\" "); 
-Greg

Re: Using $_Session-values with mysql?

Posted: Thu Sep 22, 2011 12:27 pm
by Nanonano26
Great! Thanks, it works perfect.

Re: Using $_Session-values with mysql?

Posted: Thu Sep 22, 2011 2:56 pm
by Nanonano26
A follow-up question:
Why isn't this working?

Code: Select all

....
//connected to database

$FirstName = $_SESSION['GameName'][0];
$tablename = $_SESSION['table'][0];

$result = mysql_query('SELECT Funds, Salory FROM "'.$tablename.'" WHERE FirstName="'.$FirstName.'" '); //something wrong where it says $tablename, because if I simply insert the name of the table, everything works.
$row = mysql_fetch_array($result);

//retrieving data from $row
....
I've tried so many different quote-combinations in the query-line. Can't get it to work.
Any ideas?

Re: Using $_Session-values with mysql?

Posted: Thu Sep 22, 2011 4:54 pm
by twinedev
Database/Table/Field names are not wrapped with double or single quotes, they are wrapped with backticks (`, on a PC to the left of the 1 key):

Code: Select all

SELECT `tblSample`.`SampleField` FROM `tblSample` LEFT JOIN `tblExample` ON `tblExample`.`SampleID` = `tblSample`.`ID` WHERE `tblExample`.`Field3`='Whatever'
That is for example purpose, much better to actually write:

Code: Select all

SELECT s.`SampleField` FROM `tblSample` AS s LEFT JOIN `tblExample` AS e ON e.`SampleID` = s.`ID` WHERE e.`Field3`='Whatever'