2010-11-24 1 views
0

Я долго думал, но не могу найти эффективное решение. В настоящее время у меня есть массив в PHP, который получен пользователем. Это массив объектов, и каждый объект имеет 10 переменных.Сравнение массива в таблице базы данных PHP и SQL

Мне нужно проверить, соответствует ли этот массив данным SQL ТОЧНО, что означает, что все переменные каждого объекта должны соответствовать друг другу. Индекс не имеет значения.

1) Как я могу проверить? В настоящее время единственным способом сравнения является количество элементов в массиве и количество строк в базе данных. Если я хочу проверить глубину, мне действительно нужно проверить переменную по переменной? Значение, если у меня 10 объектов, мне нужны 10 * 10 переменных проверок?

2) Единственное жизнеспособное решение, о котором я могу думать, это стирать таблицу базы данных и вставлять объект по одному в соответствии с массивом, но я беспокоюсь, если есть около 100 объектов, не будет ли это слишком тяжелым для база данных sql?

+0

Определите «данные SQL». Вы говорите о нескольких строках? Один ряд? – 2010-11-24 08:00:27

ответ

0

Относительно примитивный способ был бы:

$fields = array(); 

$object = new STDClass(); 
$object->name = "My Name"; 
$object->status = "My Status"; 
$object->level = "My Level"; 

foreach ($object as $key => $value) 
{ 
    $fields[]="`$key` = '$value'"; 
    } 

$sql = implode(" AND ", $fields); 

$query = "SELECT * FROM tablename WHERE $sql"; 

это будет генерировать запрос, который проверяет строку с точно значений в объекте.

Насколько точно это зависит от сортировки и набора символов вашей таблицы. Вы всегда можете сравнить BINARY, если вам нужны 100% точные результаты.

Смежные вопросы