2014-02-07 58 views
0

我不确定是否以最佳方式对此进行了讨论,但我想要做的是在mysql选择查询中使用两个php变量作为IN子句。在mysql选择语句中使用两个php变量

"select * from `user` where '$phpvar1' IN ('$phpvar2')" 

通常情况下,而不是$ phpvar1我将在user表使用列名,但它工作得很好,在我的情况,现在我需要$ phpvar1变量在这一特定的选择查询被用作临时列。由于$ phpvar1在每种情况下都是动态的,因此我不想存储它。我能做什么?谢谢!

编辑:为了澄清,$phpvar1不是表中的列,但我希望它只作为一个查询。在这个查询中,我想要$phpvar1,它等于例如:“cat”,其中“cat”是在列中可以找到的数据,然后这个数据(“cat”)将用于IN子句中看看$phpvar2包含“猫”

基本上我希望它做的是这样的:

SELECT * from `users` where 'mouse' IN ('cat', 'dog') and `userID` = '1' 

返回的行应该有一个用户ID = 1,满足IN子句,因为“鼠标”不('猫,'狗')在这种情况下不会有任何行返回。

+0

你执行了查询吗? –

+0

你只是试图将PHP变量的值插入到MySQL字符串中吗? – jwatts1980

+1

试试这个:''“从'user'中选择*,其中'($ phpvar2')”''中的$ phpvar1'。你的'$ phpvar2'如何形成? – vee

回答

2

重写查询以:

"SELECT * FROM `users` WHERE '$phpvar1' IN ('".implode("', '", $phpvar2)."') and `userID` = '1'" 

假设$phpvar2是含有值来检查阵列。

+0

是的,对不起,我只是注意到:) –

+0

这不会做我想做的。 MySQL将'$ phpvar1'视为不存在的列。 – user1965476

+0

@ user1965476好的,我得到了你想要的,但你的方法是错误的。您可以在查询的select部分中定义临时字段。什么是你的'where'部分?它将会像''select',''phpvar1 \'从''user''那里得到......'' –

0

尝试

$sql = "select * from `user` where ".$phpvar1." in (".$phpvar2.")"; 
+0

没有消毒? Tsk tsk tsk – Ares

0

你的PHP变量应该是在选择部分 选择$ phpvar,otherstuff,从用户,其中x在( '$ phpvar2');

+0

对不起,我无法在移动设备上对其进行格式化。 – bart2puck