Нашел в одном из проекте вот такой SQL запрос кросс-джойн двух таблиц без явного указания оператора JOIN
1 2 3 4 |
SELECT * FROM orders, customers WHERE orders.customer_id = customers.customer_id AND customers.first_name = 'John' |
Этот запрос выполняет кросс-джойн двух таблиц без явного указания оператора JOIN, что может привести к неожиданным результатам. Кроме того, он не использует оператор WHERE для фильтрации строк, что означает, что он возвращает все строки, удовлетворяющие условию соединения. Это может привести к большому объему данных, из-за которых запрос будет выполняться медленно. Наконец, условие фильтрации для идентификации клиента по имени не учитывает возможность наличия нескольких клиентов с одинаковыми именами в таблице customers.
Недавно работал с одним проектом и наткнулся на такой код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $con = mysql_connect("localhost", "username", "password"); mysql_select_db("my_database", $con); $qry = "SELECT * FROM user WHERE id = '$id'"; $result = mysql_query($qry); while ($row = mysql_fetch_array($result)) { $f = $row['field1']; $g = $row['field2']; $h = $row['field3']; } mysql_close($con); |
Переменные названия просто ужас, долго пытался понять что за field1, field2, field3. Ощущение что стро по документации или учебнику создавали проект 😂
SQL injection в PHP реальный пример
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$title=$_POST['title']; $genre=$_POST['genre']; $actor=$_POST['actor']; mysqli_query($connect,"INSERT INTO movies(title,genre,actor) VALUES('$title','$genre','$actor')"); if(mysqli_affected_rows($connect) > 0){ echo "<p>Movie Added</p>"; echo "<a href='searchdisplay.php'>Search for movies!</a>"; } else { echo "Movie NOT Added<br />"; echo mysqli_error ($connect); } |