2013-01-02 195 views
0

我正在为web项目使用php和mysqli。使用参数数量未知的bind_parameters

假设我们需要找到标题为“她就像风”的歌曲。
如果我们可以肯定的是,用户将输入歌曲的顺序的话,我们可以做到这一点(伪):

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

有了这个输入:“她的风”,这将转化为“ %she%%wind%“,这首歌就会被发现。
但是当输入是这样的:“wind like” - >“%wind%like%”时,歌曲将不会被发现。

我想通过添加like %?% and多少倍的单词数组的长度来制作$查询字符串。 所以$查询字符串已准备就绪。

该问题显示了绑定参数$ vars参数。
再次$字符串类型可以通过这样的并置:

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

但对于代表词的变量? 如果有2个字的函数调用将是这样的:

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

多少$字变量使用?

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

回答

1

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

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

+0

我对可变数量的绑定参数感兴趣。哪一个是我必须绑定的变量? – Chris

+0

使用call_user_func_array函数怎么样?但我需要调整它以适应我的问题.. – Chris

相关问题