Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php `where`子句中的未知列_Php_Mysql - Fatal编程技术网

Php `where`子句中的未知列

Php `where`子句中的未知列,php,mysql,Php,Mysql,我得到了标题中描述的错误: Unknown column 'FeedbackType' in 'where clause' 但我不明白为什么。这是我的疑问: SELECT SQL_CALC_FOUND_ROWS `Appointments`.ID, FeedbackType, FeedbackSubType FROM `UserFeedback` INNER JOIN `Appointments` ON `Appointments`.ID = `UserFeedback`.Appointme

我得到了标题中描述的错误:

Unknown column 'FeedbackType' in 'where clause'
但我不明白为什么。这是我的疑问:

SELECT SQL_CALC_FOUND_ROWS `Appointments`.ID, FeedbackType, FeedbackSubType 
FROM `UserFeedback`
INNER JOIN `Appointments` ON `Appointments`.ID = `UserFeedback`.Appointments_ID 
INNER JOIN `Reasons` ON `UserFeedback`.FeedbackSubType = `Reasons`.ID  
WHERE `FeedbackType` = 1  ORDER BY `Appointments`.ID ASC
LIMIT 0, 10
FeedbackType
UserFeedback
表中的一列,大小写正确,已经检查了几次

为完整起见,这是表架构:

CREATE TABLE IF NOT EXISTS `UserFeedback` 
(
   ID bigint(20) NOT NULL AUTO_INCREMENT,
   FeedbackType int(4) NOT NULL,
   FeedbackSubType int(4) NOT NULL,
   Notes varchar(170) NULL,
   Appointments_ID bigint(20) NOT NULL,
   IpTracking_ID bigint(20) NOT NULL,
   PRIMARY KEY (ID),
   FOREIGN KEY (Appointments_ID) REFERENCES Appointments(Id), 
   FOREIGN KEY (IpTracking_ID) REFERENCES IpTracking(Id)    
)
ENGINE=MyISAM DEFAULT CHARSET=utf8;
可能是什么问题

[编辑]

这些变体也不起作用(因为
FeedbackType
不包含保留字/字符,只属于
UserFeedback
表):

(事实上,我看不出他们有什么理由这么做)

[编辑2]

我运行了
SELECT*fromUserFeedback
以确保它确实包含该列,并且我得到了几行,所有行都包含该列(嗯,
INSERT
s工作时没有错误)

对于上面提到的每个变体,我总是得到相同的错误,总是在
WHERE
子句中。如果我省略了
WHERE
子句,我会得到未过滤的结果(包括那些结果中的
FeedbackType
列),因此这确实令人困惑

[解决方案]

出于某种原因,将
WHERE
查询替换为
内部联接中的条件
修复了它,如@MarinSagovac:


注意现在没有
WHERE
子句,但是语义应该是相同的,对吗?很明显,该列确实存在,因此错误消息有点误导IMHO。

您是否尝试了where子句中的UserFeedback.FeedbackType

您是否尝试了where子句中的UserFeedback.FeedbackType

尝试添加回勾:

SELECT SQL_CALC_FOUND_ROWS `Appointments`.ID, `FeedbackType`, `FeedbackSubType`
FROM `UserFeedback`
INNER JOIN `Appointments` ON `Appointments`.ID = `UserFeedback`.Appointments_ID 
INNER JOIN `Reasons` ON `UserFeedback`.FeedbackSubType = `Reasons`.ID  
WHERE `FeedbackType` = 1  ORDER BY `Appointments`.ID ASC
LIMIT 0, 10
添加尝试:

SELECT SQL_CALC_FOUND_ROWS `Appointments`.ID, FeedbackType, FeedbackSubType 
FROM `UserFeedback`
INNER JOIN `Appointments` ON `Appointments`.ID = `UserFeedback`.Appointments_ID 
INNER JOIN `Reasons` ON `UserFeedback`.FeedbackSubType = `Reasons`.ID  
INNER JOIN `UserFeedback`.`FeedbackType` = 1  ORDER BY `Appointments`.ID ASC
LIMIT 0, 10
尝试添加反勾号:

SELECT SQL_CALC_FOUND_ROWS `Appointments`.ID, `FeedbackType`, `FeedbackSubType`
FROM `UserFeedback`
INNER JOIN `Appointments` ON `Appointments`.ID = `UserFeedback`.Appointments_ID 
INNER JOIN `Reasons` ON `UserFeedback`.FeedbackSubType = `Reasons`.ID  
WHERE `FeedbackType` = 1  ORDER BY `Appointments`.ID ASC
LIMIT 0, 10
添加尝试:

SELECT SQL_CALC_FOUND_ROWS `Appointments`.ID, FeedbackType, FeedbackSubType 
FROM `UserFeedback`
INNER JOIN `Appointments` ON `Appointments`.ID = `UserFeedback`.Appointments_ID 
INNER JOIN `Reasons` ON `UserFeedback`.FeedbackSubType = `Reasons`.ID  
INNER JOIN `UserFeedback`.`FeedbackType` = 1  ORDER BY `Appointments`.ID ASC
LIMIT 0, 10
现在试试看


现在试试看

在WHERE子句中试试这个:

其中UserFeedback.FeedbackType='1'


删除字段名称中的所有引号(')

在WHERE子句中尝试以下操作:

其中UserFeedback.FeedbackType='1'


使用myisam时是否删除字段名称中的所有引号(')外键


这可能就是使用myisam时出现的问题

外键



这可能就是问题所在。

@SOaddict:where子句中的未知列“UserFeedback.FeedbackType”(如果省略表名,则“where子句”中的未知列“FeedbackType”)。您确定该列存在吗?是在没有列的情况下创建的表,然后在稍后将其添加到sql中。如果是,则“If not exists”语句将阻止添加它。运行此
SELECT*FROM UserFeedback
并告诉我们您在结果中看到的列。@JLevett:是的,尝试过,它存在。我运行了
SELECT*fromUserFeedback
,它返回了所有6列。我甚至手动将该列从该输出复制/粘贴到我的查询中,以确保我没有(完全)发疯。@SOaddict:where子句中的未知列“UserFeedback.FeedbackType”(或者如果我省略表名,则在where子句中的未知列“FeedbackType”)。是否确定该列存在?是在没有列的情况下创建的表,然后在稍后将其添加到sql中。如果是,则“If not exists”语句将阻止添加它。运行此
SELECT*FROM UserFeedback
并告诉我们您在结果中看到的列。@JLevett:是的,尝试过,它存在。我运行了
SELECT*fromUserFeedback
,它返回了所有6列。我甚至手动将该输出中的列复制/粘贴到我的查询中,以确保我没有(完全)发疯。尝试同时引用表和列的倾斜引号(不能使倾斜引号出现在该注释中):“UserFeedback”。“FeedbackType”@blearn:是的,我也尝试了该变体。尽管我不喜欢随机尝试这样的事情,因为a)如果列不是保留名称或包含保留字符,则不需要反勾号;b)除非两个表包含相同的列,否则不需要指定表。所以,我问为什么它不起作用。试着同时引用表和列的斜体引号(不能使斜体引号出现在这个评论中):'UserFeedback'。'FeedbackType'@blearn:是的,我也试过这个变体。尽管我不喜欢随机尝试这样的事情,因为a)如果列不是保留名称或包含保留字符,则不需要反勾号;b)除非两个表包含相同的列,否则不需要指定表。所以,我问它为什么不起作用。如果我完全删除
WHERE
子句,并且它正确返回
FeedbackType
列,那么查询就会起作用。等等,为什么要添加WHERE
FeedbackType
=1并要重新打印这个“1”?这真的需要吗?您是否尝试将WHERE子句WHERE
FeedbackType
='1'替换为WHERE
FeedbackType
=1,或者将WHERE
userfeedbacktype
FeedbackType='1'替换为WHERE
FeedbackType
='1',后者可以缓慢地用于数据库使用内部联接反馈类型。例如:internal JOIN UserFeedback.FeedbackType=1 ORDER BY
约会
.ID astry post和有问题的描述(包括供应商特定数据库上的stackoverflow,例如mysql oracle或postgresql论坛)。这是一个非常具体的问题或语法分析器/混乱的解决方案…好吧,如果我完全删除
WHERE
子句,并且它正确返回
FeedbackType
列,那么查询就会起作用。等等,为什么要添加WHERE
FeedbackType
=1并重新打印这个“1”?这真的需要吗?您是否尝试将WHERE子句WHERE
FeedbackType
='1'替换为WHERE
FeedbackType
=1,或者将WHERE
userfeedbacktype
FeedbackType='1'替换为WHERE
FeedbackType
='1',后者可以缓慢地用于数据库使用内部联接反馈类型。例如:internal JOIN UserFeedback.FeedbackType=1 ORDER BY
约会
.ID astry post和有问题的描述(包括供应商特定数据库上的stackoverflow,例如mysql oracle或postgresql fo)
SELECT SQL_CALC_FOUND_ROWS `Appointments`.ID, UserFeedback.FeedbackType, `UserFeedback.FeedbackSubType 
FROM `UserFeedback'
INNER JOIN `Appointments` ON `Appointments`.ID = `UserFeedback`.Appointments_ID 
INNER JOIN `Reasons` ON `UserFeedback`.FeedbackSubType = `Reasons`.ID  
WHERE UserFeedback.FeedbackType = 1  ORDER BY `Appointments`.ID ASC
LIMIT 0, 10