使用具有未知数量参数的bind_parameters

时间:2013-01-02 19:59:31

标签: php mysql sql-like

我正在使用php和mysqli进行网络项目。

假设我们需要找到标题为“她就像风”的歌曲 如果我们确定用户会输入歌曲的单词,我们可以这样做(伪代码):

get input and apply explode()
concat each word with % between them
and execute query

通过此输入:“她风”,将转换为“%%%%%%%”,将找到该歌曲。
但是当输入是这样的:“风似的” - > “%wind%like%”,这首歌将无法找到。

我想通过添加like %?% and来创建$ query字符串的次数与单词数组的长度相同。 所以$ query字符串已准备就绪。

问题出现在绑定参数$ vars参数中 $ types字符串可以通过以下类似的方式连接起来:

$types .= "s"; //again, the number of times as the length of the array.

但是代表这些词的变量呢? 如果有2个单词,则函数调用将类似于:

bind("ss", $word1, $word2)

要使用多少$ word变量?

在示例5中,我们可以设置要搜索的最大字数,但是这里我们遇到了另一个问题。什么是不会使用的变量的内容? 例如,如果输入是2个单词,那么3个最后变量包含什么?

1 个答案:

答案 0 :(得分:1)

对于可变数量的绑定参数,您只需将它们绑定在一个循环中即可。

但是,在您目前的情况下,您实际上只有一个要绑定的变量。 因此,只需将搜索字符串变为变量,然后将其绑定到查询中即可。