理解和实现 mysqli 预准备语句
如果您在使用 mysqli 预准备语句时遇到困难,则必须找出问题的根本原因。问题。让我们分析您提供的代码并解决遇到的错误。
在您的代码中,您尝试在不绑定参数的情况下执行准备好的语句。根据 mysqli::prepare 文档,准备好的语句中的参数标记需要在执行之前绑定到应用程序变量。要解决此问题,您应该在执行语句之前使用 mysqli_stmt_bind_param() 绑定参数。
关于使用 mysqli 进行准备语句的问题,是的,mysqli 是 PHP 的推荐扩展,并且得到了广泛支持。它提供了处理 SQL 查询的强大功能,包括准备好的语句、数据绑定和事务管理。
完整示例:带有错误处理的连接、插入和选择
这是一个完整的示例,演示了 mysqli 中预准备语句的使用,包括连接、插入和带错误的选择处理:
<?php // Establish a connection to the database $mysqli = new mysqli("localhost", "root", "root", "test"); if ($mysqli->connect_errno) { echo "Failed to connect to MySQL: " . $mysqli->connect_error; exit(); } // Prepare insert statement $sql = "INSERT INTO users (name, age) VALUES (?, ?)"; $stmt = $mysqli->prepare($sql); if (!$stmt) { echo "Failed to prepare statement: " . $mysqli->error; exit(); } // Bind parameters $name = 'John Doe'; $age = 30; $stmt->bind_param("si", $name, $age); // Execute insertion if (!$stmt->execute()) { echo "Failed to execute insertion: " . $stmt->error; exit(); } // Prepare select statement $sql = "SELECT * FROM users WHERE name = ?"; $stmt = $mysqli->prepare($sql); if (!$stmt) { echo "Failed to prepare statement: " . $mysqli->error; exit(); } // Bind parameter $name = 'John Doe'; $stmt->bind_param("s", $name); // Execute selection if (!$stmt->execute()) { echo "Failed to execute selection: " . $stmt->error; exit(); } // Get result $result = $stmt->get_result(); if (!$result) { echo "Failed to get result: " . $stmt->error; exit(); } // Iterate through the result and display data while ($row = $result->fetch_assoc()) { echo "ID: " . $row['id'] . ", Name: " . $row['name'] . ", Age: " . $row['age'] . "\n"; } // Close the statement and connection $stmt->close(); $mysqli->close(); ?>
此代码建立与数据库的连接,准备插入和选择语句,绑定参数,执行查询并相应地处理错误。它展示了使用 mysqli 准备好的语句的完整工作流程。
以上是如何在 PHP 中有效使用 mysqli 预准备语句?的详细内容。更多信息请关注PHP中文网其他相关文章!