【问题标题】:Jquery posting multiple select valuesJquery发布多个选择值
【发布时间】:2014-08-31 16:07:08
【问题描述】:

当您提醒它时,下面的代码工作正常(例如,如果选择了选项的 1 和 2,它将显示“1,2”),但是当我尝试使用 jquery 将其发布到数据库时,它只是输出“Array ”。我尝试过使用 toString ,我认为这可能会有所帮助,但似乎没有。 plugin 工作正常,所以我认为这一定是我发布它的方式有误。

我怎样才能让它以逗号分隔的选定值(例如“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);

【问题讨论】:

  • 很可能您在 PHP 脚本中处理了错误的数据。
  • 你的数据库中column_heading字段的数据类型是什么?
  • 列是varchar

标签: php jquery post mysqli


【解决方案1】:

您似乎以数组的形式将数据发送到服务器。当您在 php 中将数组转换为字符串时,它将以字符串 "Array" 结束。

如果您有一个数组变量$array,并使用连接(放在一起)运算符. 将其附加到字符串,它可能不会达到您的预期:

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

这里更大的问题是您正在使用字符串连接创建 SQL 查询,这使您对SQL injection 开放。你真的应该考虑使用 PDO 或其他一些允许准备查询的抽象层,或者使用转义。

【讨论】:

  • -1:每个代码id是通过PHP设置的单个值,它是content,它有多个值; ... SET column_heading='[1,2,3]' where id=...
  • 感谢您的回答,我尝试将其发送到 update_db_pdo 文件,该文件以相同的方式发布数据但使用 PDO(查询为“UPDATE my_table SET $set='$content ' WHERE id=$where";) 但它不起作用(仍然输出“Array”)。这种说法还会导致问题吗?
  • 您可能希望使用foreach($content as $value) 循环遍历$content,然后在查询中使用$value 而不是$content
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多