我有一个简单的问题,涉及在 MySQL 存储过程中使用字符串参数创建 SELECT 查询,然后使用 PHP 中的准备语句传递 CALL 查询以进行检索、插入和更新。这是来自登录页面,因此调用登录过程。错误中的“Wowcrofty”是用户名。我正在使用的存储过程包含在下面。
分隔符 // 创建过程retrieve_user_info(IN用户名VARCHAR(50)) 开始 SELECT * FROM db.dbo WHERE user_username=用户名; 结尾 // 分隔符;
这就是我从 PHP 调用该过程的方式。
$result = $conn->query("调用retrieve_user_info($enteredusername)");
我已加载包含查询的页面,这是我收到的错误。
未捕获 mysqli_sql_Exception:“字段列表”中存在未知列“wowcrofty”
我创建了一些其他存储过程,它们运行良好。然而,这是第一个使用字符串作为参数的。我究竟做错了什么?谢谢您的任何建议。
引用参数:
query("CALL retrieve_user_info('$enteredusername')");
或者更好的是,使用该库来防止SQL注入:
stmt = $connection->prepare("CALL retrieve_user_info(?)");
$stmt->bind_param("s", $enteredusername);
$stmt->execute();
$result = $stmt->get_result();