#sql

Пользователь

Нашел в одном из проекте вот такой 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.

A

Администратор

Недавно работал с одним проектом и наткнулся на такой код:

 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. Ощущение что стро по документации или учебнику создавали проект 😂

Пользователь

от norberto_thiel , в категории: PHP , 2 года назад
Нет ответов

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);
}