繁体   English   中英

如何正确使用数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM