How can PHP and SQL be effectively separated to prevent mixing them up in code?

To effectively separate PHP and SQL in code, one can use prepared statements and parameterized queries in PHP to interact with a database. This approach helps prevent SQL injection attacks and ensures that SQL logic is kept separate from PHP code. By using functions or classes to handle database operations, developers can maintain a clear separation between PHP and SQL.

// Example of using prepared statements to separate PHP and SQL
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Prepare and bind SQL statement
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);

// Set parameters and execute
$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute();

echo "New records created successfully";

$stmt->close();
$conn->close();