2014-09-23 52 views
0

我有一个Db的查询应返回值:MySQL查询有问题

$gbe=mysql_query("SELECT userid FROM `gift_stage` WHERE amount='500' AND (`assign` > '1' AND `assign` < '18') AND userid !='".$class_session->isuser()."' ORDER BY id ASC LIMIT 1"); 

,但它没有显示任何值,但是当我更换AND (分配> '1' AND分配< '18')AND (分配> '1')它给出预期结果。但我没有得到这哪里出了问题,因为该领域assign alread的值为“13”上的数据库

请帮我家伙

所有的字段都为varchar

+3

在进行数字比较时,请勿使用varchars而不要数字。 '从'dual'选择'14'>'132';'将返回true。 – Sebas 2014-09-23 19:43:09

+0

您确定金额栏的值为500,其中赋值为13 – radar 2014-09-23 19:43:59

+2

'mysql_query'是一个过时的界面,不应该用于新的应用程序,并且将在未来版本的PHP中删除。像[PDO这样的现代化替代品并不难学](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/)。如果您是PHP的新手,像[PHP The Right Way](http://www.phptherightway.com/)这样的指南可以帮助解释最佳做法。 – tadman 2014-09-23 19:50:53

回答

3

删除括号和比较数字,而不是文本字符串

SELECT userid 
FROM `gift_stage` 
WHERE amount='500' 
AND `assign` > 1 
AND `assign` < 18 
AND userid !='".$class_session->isuser()."' 
ORDER BY id ASC LIMIT 1 

don't use mysql_* functions in new code他们不再保持和officially deprecated。查看red box?请改为了解prepared statements,并使用PDOMySQLiThis article将帮助您决定哪个。

+0

你不知道'assign'列是否是一个数字。 – Sebas 2014-09-23 19:46:48

+0

诚然,我们没有太多的继续。 – 2014-09-23 19:47:57

2

不要放在引号你的号码,否则他们将被视为varchars。

+0

这并不意味着这是它现在不工作的原因。 – Sebas 2014-09-23 19:47:08