2013-10-06 2 views
0

Таким образом у меня есть следующие MySQL заявление экономии на массив:MYSQL Заявление с массива переменной

$sql = "SELECT did FROM did WHERE id = '$did_id'"; 
$result = mysqli_query($link, $sql, MYSQLI_STORE_RESULT); 
    while($row = $result->fetch_row()){ 
     $did[] = $row; 
     } 

Эта часть работает отлично. Но теперь мне нужно взять значения в массиве $ did и выполнить другой поиск, используя значения в нем. Как это работает, мы назначаем пользователей определенным. Поэтому я обнаружил, что пользователь назначил (массив $ did) и отображает только результаты из другой таблицы, основанные на значениях. Я понятия не имею, как работает эта часть, но это то, что мой следующий оператор должен сделать:

SELECT * FROM log WHERE did_id = "the values in $did array" 

Надежда кто-то может помочь. Я очень ценю это. На самом деле я ничего не смог найти.

+0

** предупреждение ** ваш код уязвим для SQL-инъекций! –

+0

mysql не знает, что такое массив php, поскольку он работает только со строками. Так что попробуйте google о mysql (ansi sql на самом деле) 'IN' оператор – zerkms

+2

@ Даниэль А. Белый: ** предупреждение ** ваша фраза - это не что иное, как просто ** GUESS ** – zerkms

ответ

0

Вы можете использовать РНР join с MySQL, IN сделать запятую строк вы также можете использовать implode, join() является псевдонимом implode();

SELECT * FROM log WHERE did_id IN(".join(',',$did).") 

Одна вещи, чтобы отметить здесь, что ваш $did должен содержать идентификаторы в манере, как

array("1","2","3"....) 

Так в цикле выборки первого индекса, который содержит значение, did колонке

$did[] = $row[0]; 

Примечание: Я принимаю did, did_id Тип: int или bigint

+0

Если' $ did' не numeric type - вам нужно добавить кавычки и деактивировать данные каким-то образом (используя что-то вроде 'mysqli :: real_escape_string'), если это класс символов. В противном случае это будет либо синтаксически неправильным, либо нарушением безопасности. – zerkms

+0

Я предполагаю, что 'did' type is int или bigint –

+0

вам нужно прояснить это в любом случае. Если ваше предположение неверно, вы делаете плохую работу для OP – zerkms

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