【问题标题】:How to make array values variable如何使数组值可变
【发布时间】:2015-08-21 12:36:55
【问题描述】:
$value = array('apple', 'mango', 'paron', continue);

假设我的 $value 数组中有 3 个值,我可以轻松获得

count(array_filter($value)) 

这将返回该数组的值,在本例中为 3。

现在我想根据这些值从数据库中搜索一些东西。

喜欢 - 在名称部分我想搜索“名称”。

所以首先它应该在名称部分搜索“apple”,而不是搜索“mango”和“paron”。

$params = array();
$params['index'] = 'myIndex';
$params['type'] = 'myType';
$params['body']['query']['bool']['should'] = array(
    array('match' => array('name' => $value[i])),
);

$result = $client->search($params);

当没有剩余值时,它应该停止搜索。

那我怎么写这种方法,谁知道呢。

非常感谢。

【问题讨论】:

  • SELECT <column name> from <table name> WHERE VALUES IN (implode(',',$value))
  • 3...2...1...中的语法错误
  • 首先,请向我们展示您迄今为止在该主题上尝试过的代码。然后,@A-2-A 您的建议可能会为 sql 注入留有余地,因为您将原始变量传递给 sql 字符串并且值不在括号内并且没有被引用。
  • @A-2-A 你必须假设continue 只是一个占位符,但3v4l.org/B9KiR
  • @Machavity 我理解continue 意味着数组中有更多的值,为了简化他的问题,他在这里只显示了三个值。可能是我不正确,我不能说。

标签: php for-loop


【解决方案1】:

试试这个方法。

$mysqli = new mysqli('HOST','USER', 'PASSWORD', 'DBNAME');
$value = array('apple', 'mango', 'paron');
$stmt = $mysqli->prepare("SELECT * FROM table WERE name=?;");
$stmt->bind_param('s',$fruit);

for($i=0; $i < count($value); $i++){
$fruit = $value[$i];
$stmt->execute();
if($res = $stmt->get_result()){
while($row = $res->fetch()){
print_r($row);
}
$stmt->close();
$mysqli->close();
}
}

【讨论】:

  • OP为什么要这样尝试?
猜你喜欢
  • 1970-01-01
  • 2017-05-26
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多