php - WHERE IN 语句返回 'where clause' 中的未知列

标签 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;

最佳答案

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

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

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

关于php - WHERE IN 语句返回 'where clause' 中的未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21973164/

相关文章:

php - 从另一个静态方法调用静态方法 : PHP Fatal error: Call to undefined function

mysql - 基于附加列强制执行外键约束

mysql - 无法访问 phpmyadmin

php - 使用 JOIN 的 SELECT 命令的 MySQL 列信息

php - 显示数组存储的 id 的名称

PHP MySQL - 通知面板,单击下拉菜单时更新数据库

javascript - 相对路径2在javascript中升级

php - 为什么此 UPDATE 准备语句不起作用,但在 SQL 数据库中使用时有效

php - 简单的 Docker/Nginx 错误 - PHP/Laravel

mysql - 如何在mysql中保存和检索图像?