[英]How to correctly work with array
我有一些方法可以根据用户输入的形式创建一个MySQL查询(这是PHP Nette Framework语法,但对于这个问题来说确实并不重要)。 正确的语法我如何称呼数据库查询看起来像
$query = "SELECT * FROM candidates WHERE firstname = ? AND surname = ?";
return $this->db->queryArgs($query, ['Dante', 'Hickman']);
但是正如您所看到的,这是硬编码的,因此与表单无关。 为了实现真正的形式,我创建了另一种收集数据的方法,我将其称为:
$builder = $this->buildSearchQuery($searchParams);
在$builder
转储之后是数组(3)
0 => "SELECT * FROM candidates WHERE firstname = ? AND surname = ?" (60)
1 => array (2)
0 => "Dante" (5)
1 => "Hickman" (7)
2 => 2
此数据是正确的,它基于我输入的内容,因此方法buildSearchQuery()没问题,但让我们描述一下此数组: array[0]
是带有输入, array[1][0]
和输入的占位符的查询字符串array[1][1]
实际上是用户填入输入的数据(或文本)。 而array[2]
是填写的输入数。
我确定您已经注意到输入数量可以更改,用于5个输入的buildSearchQuery()
方法将返回如下内容:
0 => "SELECT * FROM candidates WHERE firstname = ? AND surname = ? AND favourite = ? AND notFavourite = ? AND random = ?" (60)
1 => array (5)
0 => "Dante" (5)
1 => "Hickman" (7)
2 => "Pokemon" (7)
3 => "Digimon" (7)
4 => "1122334" (7)
2 => 5
如您所见,关于“查询”部分, buildSearchQuery()
已经返回了正确的值,问题在于存储在array[1]
,我不确定如何让它像这样使$ query变为:
return $this->db->queryArgs($builder[0], [$builder[1][0], $builder[1][1]]);
具有动态数组数。
有人可以帮我吗? 谢谢
由于$builder
的第二个元素已经是数组,您可以直接将其作为参数直接传递给函数:
return $this->db->queryArgs($builder[0], $builder[1]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.