редактировать: структуру таблицы, http://puu.sh/bQKRz/785c731604.pngДаже если MySQL «где» условие не выполняется, то возвращает строку
/*
* Let's get a RANDOM question from the questions table
* Ignore questions the group has already
*/
Group.prototype.getRandomQuestion = function(callback){
var self = this;
var answered = this.answered.join();
var categories = this.categories;
var sql = "SELECT * FROM `questions` WHERE (`id` NOT IN (?) AND `category` IN (?)) ORDER BY RAND() LIMIT 1";
this.mysql_pool.getConnection(function(err, conn){
if(!err){
conn.query(sql, [answered, categories], function(err, r){
conn.release();
выше мой код. По какой-то чертовой причине он по-прежнему извлекает по крайней мере один результат из базы данных, когда это НЕ ДОЛЖНО. Предложение where не должно выполняться.
Я открыл PhpMyAdmin, выполнил тот же точный запрос с теми же точными данными, которые были подключены к нему. Он вернулся пустой. Хорошо. Так почему же этот блок кода тоже не возвращается?
Вот значения answered
и categories
соответственно:
answered
= "1,2"
categories
= "1,2,3,4"
В мой стол questions
, есть только два вопроса. Оба вопроса имеют ID 1
& 2
. Итак, почему этот блок кода все еще возвращает строку?
Всегда ли такой же ряд? Если да, то какая строка? – mscdex
Кроме того, вы пытались заставить 'categories' быть' this.categories.join(); 'вместо' this.categories'? Возможно, mysql делает что-то неожиданное с значениями массива. – mscdex
@mscdex Это всегда вторая строка – X33