Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मुझे इस LIKE क्वेरी के अंदर के पात्रों से कैसे बचना चाहिए?

MySQL मैन्युअल से :

तो, आपको LIKE . के लिए स्ट्रिंग से बचना चाहिए दो चरणों में ऑपरेटर।

PHP में यह इस तरह हो सकता है:

// Your search string, for example, from POST field
$string = $_POST['column'];

// First step - LIKE escaping
$string = str_replace(array('\\', '_', '%'), array('\\\\', '\\_', '\\%'), $string);

// Second step - literal escaping
$string = mysql_real_escape_string($string);

// Result query
mysql_query("SELECT * FROM `table` WHERE `column` LIKE '%".$string."%'");

अपडेट करें:

MySQLi का उपयोग करें

// Connect to database
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

// Your search string, for example, from POST field
$string = $_POST['column'];

// First step - LIKE escaping
$string = str_replace(['\\', '_', '%'], ['\\\\', '\\_', '\\%'], $string);

// Second step - literal escaping
$string = $mysqli->real_escape_string($string);

// Result query
$mysqli->query("SELECT * FROM `table` WHERE `column` LIKE '%{$string}%'");

पीडीओ का प्रयोग करें

// Connect to database
$conn = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');

// Your search string, for example, from POST field
$string = $_POST['column'];

// First step - LIKE escaping
$string = str_replace(['\\', '_', '%'], ['\\\\', '\\_', '\\%'], $string);

// Second step - literal escaping
$string = $conn->quote($string);

// Result query
$conn->query("SELECT * FROM `table` WHERE `column` LIKE '%{$string}%'");

या आप पीडीओ तैयार विवरण का उपयोग कर सकते हैं , दूसरे चरण के बजाय (शाब्दिक भागना):

// Connect to database
$conn = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');

// Your search string, for example, from POST field
$string = $_POST['column'];

// First step - LIKE escaping
$string = str_replace(['\\', '_', '%'], ['\\\\', '\\_', '\\%'], $string);

// Prepare a statement for execution
$statement = $conn->prepare("SELECT * FROM `table` WHERE `column` LIKE ?");

// Execute a prepared statement
$statement->execute(["%{$string}%"]);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. निर्दिष्ट कुंजी बहुत लंबी थी; अधिकतम कुंजी लंबाई 1000 बाइट्स है

  2. दूरस्थ MySQL डेटाबेस के लिए Google फॉर्म आउटपुट

  3. mysql गिनती प्रदर्शन

  4. क्या मैं सीमा लागू होने के बाद SQL चयनों को पुन:व्यवस्थित कर सकता हूँ?

  5. इनपुट मूल्यों को साफ करने का कार्य PHP