How can I use PHP preg_match for a string to check if it contains any sql? Not for preventing SQL injection but just to tell if it contains a sql statement
Asked
Active
Viewed 133 times
0
-
You can't. You can look for some SQL specific keywords, but to check if its valid SQL you need some heavier logic. – SBH Nov 17 '14 at 17:58
-
You could try to execute the query and get the return of that execute in a variable. You could set up a test database for these queries so your actual data isn't compromised. – Triplus Nov 17 '14 at 18:07
-
1`$sql = 's' . 'e' . 'l' . 'e' . 'c' . 't' . 'etc...'`. There's a string that contains some SQL...good luck coming up with a regex that could detect every potential variation of that... – Marc B Nov 17 '14 at 18:09
1 Answers
3
Checking a string for SQL is not worth your time or resources for that matter. If the goal is to prevent injection you should use PDO.
$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');
$stmt->execute(array('name' => $name));
foreach ($stmt as $row) {
// do something with $row
}
Reference material: How can I prevent SQL injection in PHP?