【问题标题】:finding data in MySQL using multidimensional array data使用多维数组数据在 MySQL 中查找数据
【发布时间】:2013-02-22 06:34:31
【问题描述】:

我一直在尝试搜索这个,但我一直在寻找“MySQL to Multi-dimensional arrays”问题的解决方案

我有一个多维数组,我想使用数组中的值来搜索我的 MySQL 数据库并输出我需要的任何内容。

我是否使用WHERE 子句? IN 子句?我需要一些帮助

我有这个数组:

Array
(
    [0] => Array
        (
            [id] => 333
            [name] => Watches
            [pluralName] => Watches
            [shortName] => Watches
        )

    [16] => Array
        (
            [id] => 111
            [name] => Bar
            [pluralName] => Bars
            [shortName] => Bar
        )

)

如果我有这样的语法:

$categorySet = $dbh->prepare("SELECT c.*,ci.*,b.business_id,b.idbusiness FROM
categories c 
JOIN categories_items ci ON ci.idcategory = c.idcategory
JOIN businesses b ON b.idbusiness = ci.id_items
WHERE c.id = :id OR c.name LIKE :name");
$categorySet -> bindParam(:name, $array['id']);
$categorySet -> bindParam(:name, '%'.$array['name'].'%');
$categorySet -> execute();

我想通过 MySQL 进行搜索,但想从数组中获取带有手表或条形的输出。

有人可以帮我吗?

谢谢!

【问题讨论】:

    标签: php mysql syntax multidimensional-array


    【解决方案1】:

    要检查条件,您总是需要WHERE 子句,所以您必须需要它。

    第二个IN 子句允许在数组为array(1,2,3,4,5); 形式时使用数组。

    IN 示例

    SELECT
     *
    FROM table_name 
    WHERE
      fields IN (array(1,2,3,4,5));
    

    更多信息

    $id_sql = array();
    $name_sql = array();
    
    foreach($conditionArray as $arry)
    {
           $name_sql[] = $arry['name'];
           $id_sql[]    = $arry['id'];
    }
    
    $ids    = implode(',',$id_sql);
    $names  = implode(',',$name_sql);
    
    SELECT * FROM table WHERE id IN ($ids) AND name IN ($names)
    

    如果可以的话,请为名称和 ID 创建单独的数组,这样您就不需要使用 for-each 只需 implode 并在 MySQL 声明中发送。

    【讨论】:

    • 这是否意味着我必须更改我的数组格式?另外,字段由什么组成?我要写成id,name IN (array(1,2,3,4,5))吗?
    • @andrewliu 不不不,兄弟...您需要为每个名称和 ID 创建数组,然后使用 AND 子句...我举例说明了可以是任何类型的字段。
    • 哦,我明白了,我想我不想使用 AND 子句,我想使用 OR。所以它应该看起来像这样? WHERE name IN (array(name1,name2,etc...)) OR id IN (array(id1,id2,etc...));
    • @andrewliu 看到更新的答案...是的,你可以使用 AND 和 OR
    • @andrewliu 顺便说一句,IN 子句已经执行 OR 条件,它将检查 id IN 条件内传递的数组中的 id。
    【解决方案2】:
    <?php
    
    $arr_queries = array ('values','values','values')
    $arr_results = array();
    
    foreach($arr as $values)
    {
      $sql = //do sql query here using $values,
      if(mysql_num_rows($sql) != 0)
      {
         while($row = mysql_fetch_array($sql))
         {
             $temp = array();
             $temp[] = $row[0]// get first column value, add other column value on $temp array
         } 
      }
    
      $arr_results[] = $temp;
    }
    
    ?>
    

    【讨论】:

    • $arr_results 将在您的 sql 查询中获得所有返回值
    • 嘿,伙计,他要求的是查询而不是如何显示它...小心
    • 除了不解决查询之外,您还有 array_ 查询没有任何用途
    猜你喜欢
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 2015-12-04
    • 1970-01-01
    相关资源
    最近更新 更多