如何正确使用数组

时间:2015-11-26 13:04:09

标签: php mysql arrays

我有一些基于表单中的用户输入创建MySQL查询的方法(它是PHP Nette Framework语法,但它对这个问题并不重要)。 如何调用数据库查询的语法正确

$query = "SELECT * FROM candidates WHERE firstname = ? AND surname = ?";
return $this->db->queryArgs($query, ['Dante', 'Hickman']);

但是你可以看到这是硬编码的,所以与表格无关。 对于真实的表单,我创建了另一种收集数据的方法,我只是称之为:

$builder = $this->buildSearchQuery($searchParams);

并且在此$builder转储之后 array(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]中的值,我不确定如何进行此操作以使$查询如下:

return $this->db->queryArgs($builder[0], [$builder[1][0], $builder[1][1]]);

具有动态数组。

有人可以帮我这个吗? 感谢

1 个答案:

答案 0 :(得分:1)

由于$builder的第二个元素已经是一个数组,你可以直接将它作为参数传递给函数:

return $this->db->queryArgs($builder[0], $builder[1]);