2015-02-01 4 views
-3

Привет я хочу создать функцию:PHP массив MySQL Query

public function findOneByAttributes($class, $attributes){} 

Эта функция возвращает первый результат от моего запроса, в котором atributes будет находиться в массиве. Так $attributes массив так:

$data = array(
    'id' => 45, 
    'name' => 'John', 
    ..... 
); 

Я хочу построить запрос, но я не знаю, как создать WHERE состояние. Я не могу использовать $data['id'], потому что я не знаю, какой атрибут мне понадобится. Я хочу создать его flexibile. Поэтому мне нужно, чтобы получить что-то подобное из массива:

SELECT * FROM 'table' WHERE id = 45 AND name = 'John' 

Благодарности

+0

Что вам нужно? Что-то вроде ... WHERE id = 45 AND name = "John"? – Joerg

+0

yes right this .. – Franky238

+1

Как получить значение ключа из массива: http://stackoverflow.com/questions/1834703/php-foreach-loop-key-value в этом для цикла, постройте свой sql. – Yazan

ответ

1
$where_clausel = " WHERE "; 
$start = true;  
foreach($data AS key => $value){ 
    if ($start === false){ 
     $where_clausel .= " AND "; 
    } 
    $where_clausel .= $key . " = '" . $value . "' "; 
    $start = false; 
} 

Это должно выглядеть примерно так, но вы должны использовать какой-то кастинг типа для проверки идентификатора.

+2

ваше условие if-loop неверно, используйте '==' вместо '='. Прямо сейчас вы назначаете переменную вместо проверки. Также 'key' должен быть' $ key'. – RST

+0

О, да, thx. Я изменил его. – Joerg

+0

его работа хорошая :) теперь у меня есть решение тоже, но ваше лучше :) – Franky238

1

другое решение

<?php 
$data = array(
    'id' => 45, 
    'name' => 'John', 
    ); 
$dataCondition = array(); 
foreach ($data as $key => $value) { 
    $dataCondition[] = "$key = '$value'"; 
} 

$dataString = implode(" and ", $dataCondition); 
$query = "select * from table where $dataString"; 
echo $query; 

наслаждаться :)