连接查询中的变量

时间:2012-08-11 21:16:54

标签: php mysql

连接此查询的正确方法是什么?

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

我一直收到这个错误:

解析错误:语法错误,意外T_ENCAPSED_AND_WHITESPACE,在第32行的C:\ xampp \ htdocs \ beta \ profile.php中期待T_STRING或T_VARIABLE或T_NUM_STRING

3 个答案:

答案 0 :(得分:5)

  

连接此查询的正确方法是什么?

让您的SQL库/客户端/服务器为您执行此操作(同时免费转义特殊字符)。尝试通过将字符串混合在一起来构建代码相对容易出错,并且涉及各种引用字符的繁琐组合,这些字符很难维护。

改为使用prepared statements and bound arguments

答案 1 :(得分:2)

您的单引号和双引号的嵌套不正确。

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

答案 2 :(得分:2)

或者:

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

或者:

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

修复了语法错误。但是,通过连接形成查询是一个坏主意。至少,如果没有使用PDO,你应该mysql_realescapestring所有参数。