What are some best practices for validating user input in PHP scripts to prevent SQL injection attacks?

To prevent SQL injection attacks in PHP scripts, it is essential to validate user input before using it in database queries. One common approach is to use prepared statements with parameterized queries, which separate the SQL code from the user input, making it impossible for attackers to inject malicious code. Additionally, sanitizing input by using functions like mysqli_real_escape_string() can help prevent SQL injection attacks.

// Validate user input to prevent SQL injection
$user_input = $_POST['user_input'];

// Using prepared statements to prevent SQL injection
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $user_input);
$stmt->execute();
$result = $stmt->get_result();

// Sanitizing input to prevent SQL injection
$sanitized_input = mysqli_real_escape_string($mysqli, $user_input);
$query = "SELECT * FROM users WHERE username = '$sanitized_input'";
$result = $mysqli->query($query);