2014-08-31 55 views
0

下面的代碼工作正常,當你提醒它(例如,如果選擇1和2選項,它會說「1,2」),但是當我嘗試使用jquery發佈它到數據庫時,它只是輸出「數組」。我已經試過對它使用toString,我認爲這可能會有所幫助,但似乎沒有。 plugin工作正常,所以我認爲它必須是我發佈它的錯誤。jquery發佈多個選擇值

如何獲取它在數據庫中以逗號分隔的選定值(例如「1,2」),而不是「警報」時的數據?

HTML

<select id='category' class='category' multiple='multiple'> 
    <option value='0'>Nothing</option> 
    <option value='1'>Option 1</option> 
    <option value='2'>Option 2</option> 
    <option value='3'>Option 3</option> 
</select> 

運行插件:

$(function(){ 
$(".category").multiselect(); 
}); 

發送到數據庫:

$('.category').change(function() { 
var selected = $(this).val(); 
alert(selected); 
    $.post('update_db.php', { 
    content : selected, 
    id : <?php echo $getid;?>, 
    set : "column_heading" 
    }) 
}); 

update_db.php除了這個多選的一切工作。

$where = $_POST['id']; 
$content = $_POST['content']; 
$set = $_POST['set']; 
mysqli_query($my_db,"UPDATE my_table SET " . $set . "='" . $content . "' WHERE id=" . $where); 
+1

您很可能在您的PHP腳本中處理錯誤的數據。 – CBroe 2014-08-31 16:10:50

+0

DB中'column_heading'字段的數據類型是什麼? – PeterKA 2014-08-31 16:22:48

+0

該列是varchar – user3834818 2014-08-31 17:14:08

回答

1

它似乎是你的數據以陣列的形式發送到服務器。當你在php中將一個數組轉換爲字符串時,它將以字符串"Array"結尾。

如果你有一個數組變量$array,並且您可以附加使用將字符串(放在一起)運營商.,它可能不是你所期望的:

$array = array(1, 2, 3); 
$foo = 'foo ' . $array; // 'foo Array' 

這裏的更大的問題是,您正在使用字符串連接創建SQL查詢,這會使您打開到SQL injection。你應該真的考慮使用PDO或其他允許準備查詢的抽象層,或者使用轉義。

+0

-1:每個代碼'id'是通過PHP設置的單個值,它是具有多個值的'content'; '... SET column_heading ='[1,2,3]'其中id = ...' – PeterKA 2014-08-31 16:24:42

+0

啊,你是對的,我已經更新了答案。 – naneau 2014-08-31 16:27:38

+0

感謝您的回答,我試着將它發送到update_db_pdo文件,該文件以相同的方式發佈數據,但使用PDO(並將查詢作爲「UPDATE'my_table' SET'$ set' ='$ content'WHERE'id' = $ where where「;)但它沒有工作(仍輸出」數組「)。這個聲明是否仍然會導致問題? – user3834818 2014-08-31 17:13:39