0

私はこの主題が以前にカバーされたことを知っています、そして私はstackoverflowによって提供されるリンクのダースについて読みました。私のニーズに合うものはありません。

同様のデータに対してPHPを使用する4つのmysqlクエリがありますが、それを1つのクエリに減らし、結果をアクセス可能な配列に入れたいと思います。これが私の現在のコードです。

 $id = $row[post_id];
    $resulttwo = mysql_query("SELECT meta_value FROM wp_postmeta WHERE `post_id` = $id AND `meta_key` = 'length' ");
    $temptwo = mysql_fetch_array($resulttwo);       
    $length[$id] = $temptwo[0];

    $id = $row[post_id];
    $resultthree = mysql_query("SELECT meta_value FROM wp_postmeta WHERE `post_id` = $id AND `meta_key` = 'location_city' ");
    $tempthree = mysql_fetch_array($resultthree);
    $trailcity[$id] = $tempthree[0];

    $id = $row[post_id];
    $resultfour = mysql_query("SELECT meta_value FROM wp_postmeta WHERE `post_id` = $id AND `meta_key` = 'location_state' ");
    $tempfour = mysql_fetch_array($resultfour);
    $trailstate[$id] = $tempfour[0];

    $id = $row[post_id];
    unset($tempfour);
    $resultfour = mysql_query("SELECT meta_value FROM wp_postmeta WHERE `post_id` = $id AND `meta_key` = 'difficulty' ");
    $tempfour = mysql_fetch_array($resultfour);
    $difficulty[$id] = $tempfour[0].' difficulty';`
4

2 に答える 2

5

これは機能するはずです:

$id = $row[post_id];
$result = mysql_query("SELECT meta_key, meta_value FROM wp_postmeta WHERE `post_id` = $id AND `meta_key` IN ('length', 'location_city', 'location_state', 'difficulty')");
$temp = mysql_fetch_assoc($result);

配列には、のように呼び出すことができるはずのと$tempが含まれます。配列全体を確認できますmeta_keymeta_value$temp[length]print_r($temp);

また、関数が非推奨になり、代わりに使用さmysql_れるため、関数を使用した新しいコードの記述を停止する必要があります。mysqli_PDO

于 2012-11-30T16:51:17.637 に答える
0

各クエリの最初の行のみを気にするので、これで十分です。

SELECT meta_value FROM wp_postmeta WHERE post_id = $id AND meta_key IN ("length", "location_city", "location_state", "difficulty") LIMIT 4;

遅すぎる!:/

于 2012-11-30T16:59:29.390 に答える