Optimierte Verwendung vorbereiteter Anweisungen in PHP mit MySQLi
Ihrem Code fehlt offenbar die Bindung von Parametern an die vorbereitete Anweisung. Gemäß der mysqli::prepare-Dokumentation müssen Parametermarkierungen gebunden werden, bevor eine Anweisung ausgeführt wird.
// Bind parameters for the first insertion $name1 = 'one'; $age1 = 1; $stmt->bind_param('si', $name1, $age1); // Execute for the first insertion $stmt->execute(); // Bind parameters for the second insertion $name2 = 'two'; $age2 = 1; $stmt->bind_param('si', $name2, $age2); // Execute for the second insertion $stmt->execute();
Vorteile von mysqli
Während mysqli nicht die einzige Bibliothek ist das vorbereitete Aussagen unterstützt, bietet es mehrere Vorteile:
Vollständiges Beispiel mit Fehlerbehandlung
Hier ist ein vollständiges Beispiel für die Verwendung vorbereiteter Anweisungen in PHP mit MySQLi, einschließlich Fehlerbehandlung:
// Database connection $mysqli = new mysqli("localhost", "root", "root", "test"); if ($mysqli->connect_errno) { echo "Failed to connect: " . $mysqli->connect_error; exit; } // Prepare statement $stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)"); if (!$stmt) { echo "Prepare failed: " . $mysqli->error; exit; } // Bind parameters for the first insertion $name1 = 'one'; $age1 = 1; $stmt->bind_param('si', $name1, $age1); // Execute for the first insertion $stmt->execute(); if ($stmt->errno) { echo "Execution failed: " . $stmt->error; exit; } // Bind parameters for the second insertion $name2 = 'two'; $age2 = 1; $stmt->bind_param('si', $name2, $age2); // Execute for the second insertion $stmt->execute(); if ($stmt->errno) { echo "Execution failed: " . $stmt->error; exit; } // Selection statement $stmt = $mysqli->prepare("SELECT * FROM users WHERE age = ?"); if (!$stmt) { echo "Prepare failed: " . $mysqli->error; exit; } // Bind parameters for selection $age = 1; $stmt->bind_param('i', $age); // Execute selection $stmt->execute(); if ($stmt->errno) { echo "Execution failed: " . $stmt->error; exit; } // Fetch results $result = $stmt->get_result(); if (!$result) { echo "Fetch failed: " . $stmt->error; exit; } while ($row = $result->fetch_assoc()) { echo $row['name'] . " " . $row['age'] . "<br>"; }
Das obige ist der detaillierte Inhalt vonWie kann ich die Verwendung vorbereiteter Anweisungen in PHP mit MySQLi optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!