【问题标题】:Loop Array to Find Results in a Database循环数组以在数据库中查找结果
【发布时间】:2018-01-14 18:19:39
【问题描述】:

我有一个 CSV 文件,我已使用 PHP 将其转换为一个数组,看起来与此类似,但记录更多:

Array(
 [0] = > Array
 {
   [firstName] = > John
   [surname] = > Smith
 }

 [1] => Array
 {
   [firstName] = > David
   [surname] = > Jones
 }
)

我正在寻找这个数据数组,并可能循环遍历它以在我的数据库中找到与数组中的数据匹配的记录。我是 PHP 新手,并使用这些数据来查询数据库。任何指导将不胜感激!

如果您需要我用来将 CSV 转换为数组的代码,请告诉我,我会编辑问题。

提前致谢!

【问题讨论】:

  • 到底是什么问题?不知道怎么查询数据库?你不知道如何遍历一个数组?您不知道使用什么查询?
  • @PaulSpiegel 我不知道如何使用数组中的数据来查询数据库

标签: php mysql arrays csv


【解决方案1】:

如果你想在数组中搜索一个值,你可以使用in_array函数

如果您有一个二维数组并想要搜索一个值,请使用 foreach 循环和 in_array

foreach($mother_arr as $child_arr){
    if(in_array($value,$child_arr)){
        echo "match"
        break;
    }
}

如果你想在数组中搜索数组,你可以使用这个函数(from here

function searchMyCoolArray($arrays, $key, $search) {
   foreach($arrays as $object) {
       if(is_object($object)) {
          $object = get_object_vars($object);
       }
       if(array_key_exists($key, $object) && $object[$key] == $search){
           echo "match";
           break;
       }
   }
}

【讨论】:

  • 我不确定您是否理解我要查找的内容...我想使用数组中的数据来搜索数据库中的记录,例如将数据放入查询或类似的东西中。感谢您的回复!这个答案可能对某人有所帮助
【解决方案2】:

由于我不知道你是如何连接到数据库的,这里是一个 PDO 的例子:

$stmt = $pdo->prepare('
    select 1
    from users
    where firstname = :firstName
      and surname   = :surname
    limit 1
');

foreach ($csvData as $key => $row) {
    $stmt->execute($row);
    $csvData[$key]['exists'] = ($stmt->fetchColumn() == 1);
}

这将为数组的每个元素添加一个新的布尔字段exists,如果users 表中已存在该行,则该字段将为true

【讨论】:

    猜你喜欢
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 2020-04-29
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    相关资源
    最近更新 更多