将数组从 js 发送到 php 再到 SQL 数据库

我希望我在这里遗漏了一些简单的东西。


我有一个在 js 中创建的数组,说:var ids = [1,2,3,4,5];


现在我希望这个数组填充我的 SQL 数据库表中的一列。


我有用于将单个元素添加到我的表中的管道设置,如下所示:


请求通过ajax发送:

$.ajax({

  type: "POST",

  url: "some.php",

  data: {

    ids: ids,

  }

});

some.php接收数据(建立连接等):

$ids = $_POST['ids'];


SQL 用于将单个值插入列 COL_ID

$sql = "INSERT INTO `mydb`.`dbtable`(`COL_ID`) VALUES ('$ids)";

此管道适用于单个值(例如,ids = 2但不适用于数组。


我想要的是将COL_ID每个数组元素包含为一行


| COL_ID    |

|--------   |

| 1         |

| 2         |

| 3         |

| 4         |

| 5         |

我怀疑它在 SQL 查询中。欢迎任何帮助。


达令说
浏览 93回答 2
2回答

慕村9548890

首先,使用准备好的语句,不要将发布数据直接插入数据库查询。直接使用 post 数据意味着你容易受到 sql 注入攻击。正如@DanielReed 所指出的,正确的格式是INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), (value_list_3);您可以动态构建它:$ids = $_POST['ids'];// Make sure we get the correct number of ? for prepared statements$params = str_repeat('(?), ', count($ids));// Strip the trailing space and comma$params = substr($params, 0, -2);$sql = 'INSERT INTO `mydb`.`dbtable`(`COL_ID`) VALUES ' . $params;现在您可以使用 $sql 作为查询,使用 $ids 作为准备好的语句的值。这可以防止 sql 注入。

慕容3067478

PHP 将其作为数组接收。SQL 语法希望它具有以下语法:INSERT INTO table_name (column_list)VALUES    (value_list_1),    (value_list_2),    ...    (value_list_n);所以你可以做的是:$sql = "INSERT INTO `mydb`.`dbtable`(`COL_ID`) ";foreach($ids as $value){     $sql .= "(".$value.") ";}
打开App,查看更多内容
随时随地看视频慕课网APP