How does using odbc_prepare() and odbc_execute() in PHP help prevent SQL injection attacks?

Using odbc_prepare() and odbc_execute() in PHP helps prevent SQL injection attacks by separating the query logic from the data values. odbc_prepare() prepares the SQL query with placeholders for parameters, and odbc_execute() binds the actual values to these parameters, ensuring that they are treated as data rather than executable SQL code.

// Example of using odbc_prepare() and odbc_execute() to prevent SQL injection

// Establish a connection to the database
$conn = odbc_connect($dsn, $user, $password);

// Prepare a SQL query with placeholders
$stmt = odbc_prepare($conn, "SELECT * FROM users WHERE username = ? AND password = ?");

// Bind the actual values to the placeholders
$username = $_POST['username'];
$password = $_POST['password'];
odbc_execute($stmt, array($username, $password));

// Fetch the results
while ($row = odbc_fetch_array($stmt)) {
    // Process the results
}

// Close the connection
odbc_close($conn);