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

Làm thế nào để cập nhật một hoặc nhiều trường bỏ qua các trường trống vào cơ sở dữ liệu mysql?

Trước tiên, hãy nhớ thoát khỏi bất kỳ chuỗi nào đến với bạn qua ĐĂNG, NHẬN hoặc YÊU CẦU (đọc kỹ về các cuộc tấn công đưa vào SQL nếu bạn không chắc tại sao).

Một cái gì đó như thế này có thể hoạt động:

$semaphore = false;
$query = "UPDATE contacts SET ";
$fields = array('tel','fax','email');
foreach ($fields as $field) {
   if (isset($_POST[$field]) and !empty($_POST[$field]) {
     $var = mysql_real_escape_string($_POST[$field]);
     $query .= uppercase($field) . " = '$var'";
     $semaphore = true;
   }
}

if ($semaphore) {
   $query .= " WHERE Cust_Name = '$cst'";
   mysql_query($query);
}

NB :Đừng bao giờ chỉ lặp qua mảng $ _POST của bạn để tạo câu lệnh SQL. Đối thủ có thể thêm các trường POST bổ sung và có thể gây ra sự nghịch ngợm. Việc lặp qua một mảng đầu vào của người dùng cũng có thể dẫn đến một vectơ chèn:tên trường cần được thêm vào câu lệnh, có nghĩa là chúng là một vectơ tiềm năng. Các kỹ thuật ngăn chặn tiêm chuẩn (các tham số câu lệnh được chuẩn bị sẵn, các chức năng trích dẫn do trình điều khiển cung cấp) sẽ không hoạt động đối với các số nhận dạng. Thay vào đó, hãy sử dụng danh sách trắng các trường để đặt và lặp qua danh sách trắng hoặc chuyển mảng đầu vào qua danh sách trắng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL:Chèn tiếng Trung Phồn thể &Giản thể vào cùng một 'ô'

  2. Làm cách nào để đọc a, as <br /> trong PHP / MySQL?

  3. ngày thời gian chuyển giá trị từ python sang mysql

  4. Thiết kế cơ sở dữ liệu:Khóa tổng hợp so với khóa chính một cột

  5. Làm cách nào để thay đổi tiền tố trong tất cả các bảng trong MySQL DB của tôi?