Matt
Matt

Reputation: 1

Concatenate variables inside of a query

What would be the proper way to concatenate this query?

$query2= "SELECT * FROM relationships WHERE user_1= '.$_SESSION['user_id'].'     
AND user_2= '.$user_id.' ";

I keep getting this error:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\beta\profile.php on line 32

Upvotes: 0

Views: 4080

Answers (3)

Quentin
Quentin

Reputation: 944438

What would be the proper way to concatenate this query?

To let your SQL library/client/server do it for you (while escaping special characters for free). Trying to build code by mashing strings together is relatively error prone and involves fiddly combinations of various quote characters that can become hard to maintain.

Use prepared statements and bound arguments instead.

Upvotes: 5

Eric
Eric

Reputation: 97681

Either:

$query2 = "SELECT * FROM relationships WHERE user_1='" . $_SESSION['user_id'] . "'AND user_2='" . $user_id . "'";

Or:

$query2 = "SELECT * FROM relationships WHERE user_1='${_SESSION['user_id']}' AND user_2='$user_id'";

fixes your syntax error. However, forming queries through concatenation is a bad idea. At the very least, you should mysql_realescapestring all the arguments, if not move to using PDO.

Upvotes: 2

ILker Özcan
ILker Özcan

Reputation: 346

You have an incorrect nesting of single and double quotes.

$query2= "SELECT * FROM relationships WHERE user_1= '" . $_SESSION['user_id'] . "' AND user_2= '" . $user_id . "'";

Upvotes: 2

Related Questions