WHERE IN语句返回'where子句'中的Unknown列

时间:2014-02-23 19:12:25

标签: php mysql

这些线条效果很好并且给我正确的输出:

$query = "SELECT * FROM `scores` WHERE id IN ('tim', 'scrat')";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());

但是,如果我想将('tim', 'scrat')替换为我首先使用我从另一列获取的信息创建的变量:

$query = "SELECT friendsids FROM `scores` WHERE id='tom'";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$row = mysql_fetch_array($result);
$friendsids = ($row[0]);
echo ($friendsids); // this correctly logs: tim,scrat

// now the same as above, but using $friendsids:
$query = "SELECT * FROM `scores` WHERE id IN ($friendsids)";
$result = mysql_query($query) or die('Query failed: ' . mysql_error()); 

我一直收到错误

Query failed: Unknown column 'tim' in 'where clause'

所以似乎WHERE操作确实将$ friendsids放入碎片中,但不知何故无法正确识别它们?

不确定它是否相关,我的表格如下:

CREATE TABLE `scores` (
`id` VARCHAR(20) PRIMARY KEY,
`score` INT(10) UNSIGNED NOT NULL DEFAULT ‘0’,
`friendsids` VARCHAR(1000)
)
TYPE=MyISAM;

1 个答案:

答案 0 :(得分:0)

您可以简单地使用由您的第一个查询构成的查询,而不是两次点击数据库并运行所描述的问题:

SELECT 
    *
FROM
    `scores`
WHERE
    id IN (
        SELECT
            friendsids
        FROM
            `scores`
        WHERE
           id='tom')

否则你需要在第一个结果中添加引号,但我认为这可以节省时间和精力。