2

これを検索しようとしてきましたが、「MySQL から多次元配列へ」という問題の解決策を見つけ続けています。

多次元配列があり、配列の値を使用して 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 を検索したいのですが、配列から時計またはバーを含む出力を取得したいと考えています。

誰かが私を助けることができますか?

ありがとうございました!

4

2 に答える 2

3

条件を確認するには、常にWHERE句が必要だったので、それが必要です。

2 番目の句では、配列がフォームIN内にある場合に配列を使用できます。array(1,2,3,4,5);

の例

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

于 2013-02-22T06:44:34.150 に答える
-1
<?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;
}

?>
于 2013-02-22T06:44:55.860 に答える