Я в настоящее время настройки таблицы базы данных следующим образом:PHP и MySQL - Петля запрос, если значение не равно нулю
| id | thing_id | value
«thing_id» относится к уникальному идентификатору в той же таблице.
Я пытаюсь создать функцию (в PHP), которая будет запускать запрос к базе данных MySQL, выгружать эту информацию в массив, а если «thing_id» NOT NULL, она будет возвращаться назад и снова запускать запрос , и добавьте информацию в существующий массив. Это будет продолжаться до тех пор, пока значение "thing_id" не будет равно NULL.
Как я могу это сделать? Кстати, я разрабатываю это поверх WordPress.
Нижеследующее ниже работает, но я чувствую, что есть лучший способ сделать это. Как я могу упростить это и сделать его не ресурсом hog? Вот что у меня есть:
$related_thingsSql = "
SELECT $thingsDB.value, $thingsDB.thing_id, $thingsDB.id
FROM $thingsDB
WHERE $thingsDB.id = '$related_thing_id'
";
$related_things = $wpdb->get_results("$related_thingsSql");
foreach ($related_things as $related_thing) {
$related_thing_name[] = $related_thing->value;
$related_thing_id2[] = $related_thing->id;
$related_thing_id = $related_thing->thing_id;
}
while ($related_thing_id != NULL) {
$related_thingsSql2 = "
SELECT $thingsDB.value, $thingsDB.thing_id, $thingsDB.id
FROM $thingsDB
WHERE $thingsDB.id = '$related_thing_id'
";
$related_things = $wpdb->get_results("$related_thingsSql2");
foreach ($related_things as $related_thing) {
array_unshift($related_thing_name, $related_thing->value);
array_unshift($related_thing_id2, $related_thing->id);
$related_thing_id = $related_thing->thing_id;
if (empty($related_thing->thing_id)) {
$related_thing_id = NULL;
}
}
}
$related_things_length = count($related_thing_name);
for ($x = 0; $x < $related_things_length; $x++) {
echo ' > <a href="' . site_url() . '?id=' . $related_thing_id2[$x] . '">' . $related_thing_name[$x] . '</a>';
}
Письменный код будет хорошим началом ... покажите, что вы делали до сих пор. –
Во-первых, давайте посмотрим некоторые php и/или sql. Вот что говорят теги. –
** ПРЕДУПРЕЖДЕНИЕ **: вы создали опасную ошибку [SQL injection bug] (http://bobby-tables.com/), поместив данные пользователя непосредственно в свой запрос. ** НИКОГДА не делайте этого. Вместо этого используйте функцию WordPress [готовые заявления] (http://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks) для правильного удаления всех параметров данных. – tadman