Maison >développement back-end >tutoriel php >Pourquoi mes instructions préparées par mysqli échouent-elles et comment puis-je lier correctement les paramètres ?

Pourquoi mes instructions préparées par mysqli échouent-elles et comment puis-je lier correctement les paramètres ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-12 20:04:16618parcourir

Why Do My mysqli Prepared Statements Fail, and How Can I Properly Bind Parameters?

Utilisation des déclarations préparées mysqli

Premiers pas avec les déclarations préparées

Vous essayez de utilisez des instructions préparées, mais votre code rencontre une erreur. Le problème vient d'une étape manquante : lier les paramètres à l'instruction préparée.

Paramètres de liaison

Les instructions préparées nécessitent que vous liez des paramètres avant de s'exécuter. Ce processus associe des variables externes aux espaces réservés (?) dans la requête SQL.

$name = 'one';
$age = 1;

$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");

// Bind parameters (typehint: string, integer)
$stmt->bind_param('si', $name, $age);

// Now you can execute
$stmt->execute();

Ai-je besoin de mysqli pour les instructions préparées ?

Oui, mysqli est requis pour les déclarations préparées.

Complet Exemple

Connexion :

$mysqli = new mysqli("localhost", "root", "root", "test");
if ($mysqli->connect_errno) {
    echo "Connection failed: " . $mysqli->connect_error;
}

Insertion :

$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");

// Bind parameters (typehint: string, integer)
$stmt->bind_param('si', $name, $age);

// Insert row
$stmt->execute();

Sélection avec erreur Manipulation :

$stmt = $mysqli->prepare("SELECT * FROM users WHERE name = ?");
$stmt->bind_param('s', $name);

$stmt->execute();

if ($stmt->errno) {
    echo "Error: " . $stmt->error;
} else {
    $result = $stmt->get_result();
}

// Process result

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn