这个SQL查询WHERE AND子句出了什么问题?

时间:2017-08-30 14:18:28

标签: mysql wordpress

以前,这是有效的:

$patient_story_set_photos = $wpdb->get_results('SELECT * FROM wp_before_after WHERE patientID = '.$post->ID.' AND patient_display = 1');

但是,当我尝试添加另一个AND条件时:

$patient_story_set_photos = $wpdb->get_results('SELECT * FROM wp_before_after WHERE patientID = '.$post->ID.' AND patient_display = 1 AND period_taken = '.$set->period_taken);

我在屏幕上收到以下错误:

WordPress database error: [Unknown column '1hour' in 'where clause']
SELECT * FROM wp_before_after WHERE patientID = 8175 AND patient_display = 1 AND period_taken = 1hour

无法理解为什么会出现问题,您是否不允许在SQL中使用多个AND条件?

2 个答案:

答案 0 :(得分:0)

问题不在于AND,问题是你的1小时,1小时不带引号意味着对名为1小时的对象(数据库,表)的引用,你需要引用'1小时'。 如果你写

    SELECT * FROM wp_before_after 
WHERE patientID = 8175 
AND patient_display = 1 
AND period_taken = '1hour'

您将比较字段periodtaken与等于'1hour'的字符串(CHAR,VARCHAR,TEXT)。 我假设period_taken是字段类型的CHAR,VARCHAR或TEXT

答案 1 :(得分:0)

在此之前,不要连接SQL字符串现在它已经必须(请参阅如何正确执行https://stackoverflow.com/a/60496/3771219

你面临的问题是因为,我认为,period_taken字段是某种Char / Varchar / String字段,当你通过“Stringy”字段过滤时,你必须用单引号来覆盖你的文字值: / p>

SELECT * 
FROM wp_before_after 
WHERE patientID = 8175 
AND patient_display = 1 
AND period_taken = '1hour'

希望这个帮助