2013-06-16 2 views
1

Вот что я пытаюсь сделать. У меня есть простой фрагмент кода java-скрипта, который принимает значение флажка и удаляет соответствующее из базы данных. Скажем, что у меня есть три варианта: красный, синий, желтый и красный выбраны, запись для красного будет удалена.Javascript-массив в подготовленном SQL-заявлении

Этот код идеально подходит.

var n = $('input[type=checkbox]:checked').val(); 
db.transaction(function (tx) { 
           tx.executeSql('delete from details where name = ?',[n],function(){ 
           alert('The event is successfully deleted'); 
          }); 

         }); 

Но требование, чтобы захватить несколько выбранные параметры флажка, а также (то есть), если красные и синие цветы выбраны или все три выбраны, код должен удалял запись выбранных значений. Я могу захватить значения, выбранные в массиве, с помощью следующего фрагмента кода.

var checkboxValues = $('.myCheckbox:checked').map(function() { 
         return $(this).val(); 
        }).get(); 

Теперь мне нужно использовать этот массив строк в инструкции SQL. Я попробовал следующий фрагмент кода, но не использовал его.

db.transaction(function (tx) { 
           tx.executeSql('delete from details where name in (?)',[checkboxValues],function(){ 
           alert('The event is successfully deleted'); 
          }); 

Несколько других ответов предложил мне, чтобы преобразовать объект массива в строку с разделителями-отделено с помощью ToString() и присоединиться к функции(), но те не очень помогают мне. Я сомневаюсь, что мой SQL-оператор правильный. Плз мне кто-то помогает. Заранее спасибо !!

+3

Вы генерируете и выполняете SQL-запросы из своего javascript? Надеюсь, ваш сайт не является общедоступным. –

+0

О, дорогой господин, если вы создаете библиотеку для выполнения SQL-запросов на стороне клиента, тогда вы позволяете своим пользователям контролировать вашу базу данных. –

+1

@DarinDimitrov или доступен недовольным сотрудником. –

ответ

2

Возможно, вы могли бы повернуть функцию вокруг так, чтобы она выполняла итерации по возвращаемым значениям и заглаживала функцию db для каждого по очереди. Что-то вдоль линий:

$(checkboxValues).each(function(tx){... 

Или вы могли бы рассмотреть брикетирование обновления SQL, как каждое значение находится в пределах первой функции, до тех пор, как вы бросаете безопасность из окна. Тогда вам нужно будет включить значение как this, и вы можете потерять переменную.

+0

Я уже реализовал эту работу, перейдя через массив. Но мне нужно знать, как получить предложение «in», работающее с подготовленным SQL-выражением в javascript, чтобы я мог работать с массивом целиком. Спасибо за помощь !! – bala

+1

В конечном счете, я думаю, вам будет проще реализовать свои манипуляции с сервером на сервере. В противном случае вы будете строить работу вокруг при работе, в результате чего код, который не может быть сохранен (но легко взламывается). –

Смежные вопросы