亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將數組從 js 發送到 php 再到 SQL 數據庫

將數組從 js 發送到 php 再到 SQL 數據庫

PHP
達令說 2023-04-15 14:26:19
我希望我在這里遺漏了一些簡單的東西。我有一個在 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 查詢中。歡迎任何幫助。
查看完整描述

2 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

首先,使用準備好的語句,不要將發布數據直接插入數據庫查詢。直接使用 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 注入。


查看完整回答
反對 回復 2023-04-15
?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

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.") ";

}


查看完整回答
反對 回復 2023-04-15
  • 2 回答
  • 0 關注
  • 158 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號