以前,这是有效的:
$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条件?
答案 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'
希望这个帮助