首页 > 解决方案 > 如何处理MYSQL数据库中'where子句'中的未知列'?

问题描述

不要关闭它,类似的问题没有一个好的答案?不工作查询:

$UT = '36daaae649c8b5bcfffe14e7cf5702cb' ;
$sql = " INSERT INTO foldertable (folderid, `serverToken`) 
    SELECT
        $folderId,
        (SELECT serverToken FROM `servertoken` WHERE `userToken` = $UT LIMIT 1)
    WHERE NOT EXISTS  
        (SELECT folderid FROM foldertable WHERE folderid = $folderId)";

错误信息

'where 子句'中的未知列'36daaae649c8b5bcfffe14e7cf5702cb'

所以我改变了它:

$UT = '36daaae649c8b5bcfffe14e7cf5702cb' ;
$sql = " INSERT INTO foldertable (folderid, `serverToken`) 
    SELECT
        $folderId,
        (SELECT serverToken FROM `servertoken` WHERE `userToken` = '36daaae649c8b5bcfffe14e7cf5702cb'LIMIT 1)
    WHERE NOT EXISTS
        (SELECT folderid FROM foldertable WHERE folderid = $folderId)";

现在瓦拉!!查询有效。我的想法就像2语句之间有什么区别。
我搜索了所有内容并将查询更改为:

$sql = " INSERT INTO foldertable (folderid, `serverToken`) 
    SELECT
        $folderId,
        (SELECT serverToken FROM `servertoken` WHERE `userToken` = '$UT' LIMIT 1)
    WHERE NOT EXISTS  
        (SELECT folderid FROM foldertable WHERE folderid = $folderId)";

所以现在它的工作。

所以我认为''有问题。(虽然我不知道那有什么问题)。

但是我的眼睛刚刚注意到那里有另一个$folderId变量

$folderId = "12345" ;

那么这里发生了什么?

标签: phpmysqlinnodb

解决方案


推荐阅读