Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

chèn nhiều giá trị trong một thuộc tính

Từ thiết lập của bạn, hãy xem xét user_id đó là PK tăng tự động:

$user_name = mysql_real_escape_string($_POST['user_name']);
$user_lang = mysql_real_escape_string(implode(',', $_POST['user_lang']);
$sql = "INSERT INTO tbl_users (`user_name`, `user_lang`) VALUES ('{$user_name}', '{$user_lang}');

Howerver, như những người khác đã đề cập, bạn có thể nên tìm kiếm một bảng cấp 3:

tbl_users_lang
user_id    lang_id

Và chèn thích (ví dụ:không xử lý lỗi, chỉ là một đề xuất)

$user_name = mysql_real_escape_string($_POST['user_name']);
$sql = "INSERT INTO tbl_users (`user_name`) VALUES ('{$user_name}');"
mysql_query($sql);

$user_id = mysql_insert_id();
foreach ($user_lang as $lang) {
   $lang = mysql_real_escape_string($lang);
   $sql = "INSERT INTO tbl_users_lang (`user_id`, `lang_id`) VALUES ({$user_id}, '{$lang}');"
   mysql_query($sql);       
}

** Chỉnh sửa **

Cũng giống như một phần thưởng, với truy vấn này, bạn có thể tìm nạp một hàng được phân tách bằng dấu phẩy cho danh sách ngôn ngữ của bất kỳ người dùng nhất định nào. Nghĩ rằng bạn có thể quan tâm:

SELECT DISTINCT u.user_id, u.user_name, GROUP_CONCAT(l.lang_name) 
  FROM `tbl_users` as u
  LEFT JOIN `tbl_users_lang` as ul ON u.user_id = ul.user_id 
  LEFT JOIN `tbl_language` as l on ul.lang_id = l.lang_id
  -- add WHERE clause here to filter (ex : WHERE u.user_name LIKE 'John%')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lệnh SQL trả về tên trường của bảng là gì?

  2. LỆNH LỆNH Truy vấn MySQL BẰNG các giá trị nhất định trước các giá trị khác

  3. Lỗi chưa nhận được:Đã nhận gói không đúng trình tự khi tắt công cụ phát triển - Electron + Trình điều khiển nút MySQL + Webpack

  4. chuyển đổi ký tự utf8mb4 thành utf8 trong php

  5. SQL:Chọn cột làm <giá trị của một cột khác>