【问题标题】:How to bind a parameter inside of a LIKE clause with percentages in mysqli? [duplicate]如何将 LIKE 子句中的参数与 mysqli 中的百分比绑定? [复制]
【发布时间】:2016-04-22 23:02:21
【问题描述】:

我正在使用mysqli,我有这个查询:

$q = "SELECT col1, col2 FROM `Something` WHERE col2 LIKE '%?%'";

如果我在 PHP 之外用一个词代替 ? 来查询它,同样的查询也可以正常工作。在 PHP 中,我不能这样做。我得到的错误是:

mysqli_stmt::bind_param(): 变量数与prepared statement[..]中的参数数不匹配

var_dump() 中的查询输出正常,参数本身也是如此。

这是bind_param()

$stmt->bind_param("s", $param);

我做错了什么?

【问题讨论】:

  • LIKE ? 然后将百分比添加到实际参数中
  • @JimL ...我不敢相信这是多么简单,而且我没有想到,哈哈。那很完美。如果您想将其发布为答案,我们会接受。
  • 我确定它是重复的,希望有人可以标记它 - 出于某种奇怪的原因,我找不到重复项
  • 我找不到重复的,因此发了帖子。建议是针对 PDO 的,但答案不适用于 mysqli。

标签: php mysqli


【解决方案1】:

这只是标志的位置问题

$q = "SELECT col1, col2 FROM `Something` WHERE col2 LIKE ?";

$stmt->bind_param("s", '%' . $param . '%');

我知道这让很多人望而却步,你不是第一个 :)

【讨论】:

    【解决方案2】:

    为了让这个工作我必须这样做(类似于正确答案)......

    $param = '%' . $param . '%'
    
    $q = "SELECT col1, col2 FROM `Something` WHERE col2 LIKE ?";
    
    $stmt->bind_param("s", $param );
    

    【讨论】:

    • 这和 JimL 的回答一样有效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    相关资源
    最近更新 更多