0
でない場合、私は現在、そのようなデータベーステーブルを設定している:PHP&MySQLの - ループのクエリ値がnull
| id | thing_id | value
「thing_idは」同じテーブル内で一意のIDに関するものです。
MySQLデータベースに対してクエリを実行し、その情報を配列にダンプする関数(PHPで)を作成しようとしています。「thing_id」がNOT NULLの場合、ループバックして再度クエリを実行します、既存の配列に情報を追加します。これは、 "thing_id"がNULLになるまで続きます。
これを行うにはどうすればよいですか? Btw、私はWordPressの上にこれを設計しています。
以下は機能しますが、これを行うにはより良い方法があるように感じます。私はこれを単純化して、それを豚の資源にしないでください。ここに私が持っているものがあります:
$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インジェクションのバグ](http://bobby-tables.com/)を作成しました。 **決してこれをしないでください。代わりに、WordPress [prepared statements features](http://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks)を使用して、すべてのデータパラメータを適切にエスケープします。 – tadman