MySQL 使用准备好的语句插入或更新[重复]

问题描述 投票:0回答:1

我有一个简单的问题,涉及在 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”

我创建了一些其他存储过程,它们运行良好。然而,这是第一个使用字符串作为参数的。我究竟做错了什么?谢谢您的任何建议。

mysql procedure
1个回答
1
投票

引用参数:

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();
© www.soinside.com 2019 - 2024. All rights reserved.