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

Vấn đề ràng buộc tham số Mysqli

$suquery=$dbCon->prepare("select * from Table where ? LIKE ?");

Sẽ không hoạt động như mong đợi. Nó sẽ được dịch là:

SELECT * from table WHERE 'columnName' LIKE '%a%'

trả về tất cả các hàng vì 'columnName' chứa 'a'. 'columnName' là một chuỗi, không phải là tên cột thực.

Lần thử thứ hai của bạn là đúng, ngoại trừ bạn có thêm một dấu ngoặc kép trong thuật ngữ. Khi sử dụng các tham số, bạn không cần bất kỳ dấu ngoặc kép nào. Giải pháp là:

$term = "%".$_POST['searchTerm']."%";
$suquery=$dbCon->prepare("select * from Table where columnName LIKE ?");
$suquery->bind_param('s', $term);
$suquery->execute();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận mục nhập cụ thể trong trường hợp mục nhập trùng lặp

  2. Loại 'MySqlConnection' không được xác định

  3. Kết nối MySQL qua SSL với Laravel

  4. Truy vấn SQL để truy xuất dữ liệu năm tài chính được nhóm theo năm

  5. MySQL GROUP BY ... CÓ các giá trị khác nhau trong cùng một trường