在Ubuntu中,使用MySQL时防止SQL注入的方法有很多。以下是一些建议:
$pdo = new PDO("mysql:host=localhost;dbname=mydb", "username", "password");
$sql = "INSERT INTO users (username, password) VALUES (:username, :password)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(":username", $username);
$stmt->bindParam(":password", $password);
$username = "user1";
$password = "pass1";
$stmt->execute();
DELIMITER //
CREATE PROCEDURE AddUser(IN p_username VARCHAR(255), IN p_password VARCHAR(255))
BEGIN
  INSERT INTO users (username, password) VALUES (p_username, p_password);
END //
DELIMITER ;
在PHP中调用存储过程:
$pdo = new PDO("mysql:host=localhost;dbname=mydb", "username", "password");
$sql = "CALL AddUser(:username, :password)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(":username", $username);
$stmt->bindParam(":password", $password);
$username = "user1";
$password = "pass1";
$stmt->execute();
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    username = Column(String)
    password = Column(String)
engine = create_engine('mysql+pymysql://username:password@localhost/mydb')
Session = sessionmaker(bind=engine)
session = Session()
new_user = User(username="user1", password="pass1")
session.add(new_user)
session.commit()
mysqli_real_escape_string函数:$mysqli = new mysqli("localhost", "username", "password", "mydb");
$username = $mysqli->real_escape_string($_POST["username"]);
$password = $mysqli->real_escape_string($_POST["password"]);
$sql = "INSERT INTO users (username, password) VALUES ('$username', '$password')";
$mysqli->query($sql);
总之,防止SQL注入的最佳实践是使用预处理语句、存储过程和ORM框架。在某些情况下,也可以对用户输入进行验证和转义。