【问题标题】:Incorporate SetString in Prepared Statements SQL在准备好的语句 SQL 中合并 SetString
【发布时间】:2014-01-08 04:56:38
【问题描述】:

我正在尝试将 SQL 查询更改为 LIKE 类型,其中涉及在末尾添加“%”。经过一番挖掘,我了解到我需要以某种方式使用 SetString 。像这样(这好像是JAVA):

pstmt.setString(1, notes + "%");

虽然我不确定如何将其合并到我的代码中:

$query = 'SELECT DISTINCT ... LEFT JOIN ... ON ... WHERE bedrijfsnaam = ?';

$stmt->prepare($query);

$stmt->bind_param('sii', $bedrijfvariabele2, $startpoint, $limit);

$stmt->execute();

不确定如何更改 setString 以与我的 PHP 合并?

到目前为止,我们已经得到了这个:

$query = 'SELECT DISTINCT ... LEFT JOIN ... ON ... WHERE bedrijfsnaam LIKE ?';

$stmt->prepare($query);

$stmt->bind_param('sii', "$bedrijfvariabele2%", $startpoint, $limit);

$stmt->execute();

然而,这会产生一个从这段代码开始的空白页面。

我的最终解决方案是在绑定参数之前添加 % 图标。

$bedrijfvariabele2 .= "%";

$stmt->bind_param('sii', $bedrijfvariabele2, $startpoint, $limit);

非常感谢!

【问题讨论】:

  • 为什么在PHP 中使用. 运算符?
  • @crush,谢谢,另一个主题确实提到了 Java。知道如何将 setString 合并到 PHP 中吗?
  • 我认为@crush 意味着你为什么不使用.
  • @DigitalChris 不,第一行代码是 pstmt.setString 这是一个 JAVA 调用。只需将您的查询更改为 WHERE bedrijfsnaam LIKE ?并在 bind_param 中执行 "%$bedrijfvariabele2%"
  • . 运算符用于PHP 中的字符串连接。罗廷汉说的应该行得通。

标签: php sql


【解决方案1】:

您想在绑定之前将“%”附加到字符串:

$bedrijfvariabele2 .= "%";  //this will append % after $bedrijfvariabele2's value

$query = 'SELECT DISTINCT ... LEFT JOIN ... ON ... WHERE bedrijfsnaam = ?';

$stmt->prepare($query);

$stmt->bind_param('sii', $bedrijfvariabele2, $startpoint, $limit);

$stmt->execute();

【讨论】:

  • 克里斯?如果查询是 WHERE fieldName = ?你在文字值之后添加 % ,那将如何工作? (PS不是讽刺,想知道我是否遗漏了什么)
  • @Rottingham 您在第 1 行设置了 var $bedrijfvariabele2。直到第 4 行的 bind_param() 才使用它。有关 bind_param() 通配符的用法,请参见 this answer
  • 这实际上是我的问题最简单的解决方案,谢谢!
  • @DigitalChris +1 没有意识到 bind_param 使用了这样的通配符!
猜你喜欢
  • 1970-01-01
  • 2014-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多