mysql linux c 绑定变量,在MySQL中使用绑定参数作为用户定义变量是否安全?

问题

好的,但如果绑定的参数值在MySQL中用作User-Defined Variables,我真的不知道发生了什么。

初始安全绑定参数过程是否可用于在STEP 2中执行(因此注入)?

// The user input that may be the target for injection

$userInput = "input";

// STEP 1 -------------------

$q = "SET @param1 = :param1;";

// Execute query to set mysql user-defined variables

$param = [

'param1' => $userInput

];

$stmt = $pdo->prepare($q);

$stmt->execute($param);

// STEP 2 -------------------

// Query DB with User-Defined Variables

$q = "

SELECT ...

WHERE

table.field1 = @param1 OR

table.field2 = @param1 OR

table.field3 = @param1

";

// Query

$stmt = $pdo->query($q);

// STEP 3 -------------------

// Fetch Data

$row = $stmt->fetch();

我为什么要使用这种方法?

我使用来避免多个类似的命名参数,如下面的示例所示

您不能使用同名的命名参数标记

一旦在准备好的声明中,除非仿真模式打开

来自manual的

。维护复杂的查询很麻烦:

$q = "

SELECT ...

WHERE

table.field1 = :param1_1 OR

table.field2 = :param1_2 OR

table.field3 = :param1_2

";

$param = [

'param1_1' => $userInput

'param1_2' => $userInput

'param1_3' => $userInput

];

$stmt = $pdo->prepare($q);

$stmt->execute($param);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值