【问题标题】:Using variables in mysqli bind_param在 mysqli bind_param 中使用变量
【发布时间】:2017-03-06 13:11:44
【问题描述】:

我有许多类似(但不相同)的 sql 语句。每次调用的参数类型都不同,所以我想将它们作为变量传递。像这样的:

$stmt->bind_param( $typeString, $parameter1, $parameter1 );

其中 $typeString 可以设置为 'ss' 或 'is' 或 'ds'。

我收到错误类型定义字符串中的元素数量与绑定变量的数量不匹配。

我已经尝试过(例如)

$typeString = "is";
$typeString = "\'".$typeString."\'";
$stmt->bind_param( $typeString, $parameter1, $parameter1 );

$typeString = "is";
$stmt->bind_param( $typeString, $parameter1, $parameter1 );

但还是报错。

可以用变量来设置吗?

【问题讨论】:

  • sql语句在哪里?并且永远不要绑定一个变量两次,你使用两次$parameter1
  • 您只需绑定一次:stackoverflow.com/questions/15748254/… 然后重新填充参数变量并再次执行。如果可能,请始终使用 s 作为参数类型。
  • 相似(但不相同)的 sql 语句的数量 因此,如果您有 2 个 sql 语句,那么您也有 2 个 mysqli stmt 对象(每个 stmt 对象)。所以这里不应该混淆。
  • 不确定我明白了。您想为不同的查询重用准备好的语句吗?
  • 不在这里:重用有界变量用于查询的不同执行。 stmts 是为多执行而设计的!将其发送一次到 sql 服务器(使用占位符查询),但使用 diff 参数执行它(仅变量发送到 mysql)。

标签: php mysqli


【解决方案1】:
  1. 第一个变体没有意义,因为不应将引号发送到类型定义列表中。
  2. 第二个变体确实有效。
  3. 设置具体参数用处不大。只需使用“s”即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 2013-01-14
    • 2018-08-27
    • 1970-01-01
    相关资源
    最近更新 更多