как получить значение в массиве из индивидуального запроса - PullRequest
1 голос
/ 28 января 2010

у меня есть

Book ID Array

    Array
    (
        [0] => 61
        [1] => 72
        [2] => 78
        [3] => 100
        [4] => 102
    )

теперь из другой таблицы table_bookPrice, где указана цена я хочу, чтобы выбрать все цены из table_bookPrice, где идентификатор книги находится в данном массиве (массив идентификатора книги) и если цена не упоминается в поле table_bookPrice, то это будет автоматически 500

какой будет точный запрос

так что массив, который я получил, выглядит так

Book Price Array

    Array
    (
        [0] => 150
        [1] => 100
        [2] => 500 ( not mentioned in table, so it is 500)
        [3] => 300
        [4] => 200
    )

Ответы [ 2 ]

1 голос
/ 28 января 2010

Я на работе, поэтому не смог протестировать или скомпилировать его, но я надеюсь, что моя логика понятна.

Не уверен, что это будет работать, но что-то в этом роде

$book_price_array = array(); //contents to be added.

// loop through the array an examine its price by querying your table.
foreach ($book_id_array as $key => $value) {
   $price = mysql_query("SELECT price FROM table_bookPrice 
                                     WHERE book_id = {$value}");
   // there is a price, set the price.
   if ($price > 0 && $price != NULL)  $book_price_array[$key] = $price;

   // there is no price, set the default price
   else  $book_price_array[$key] = 500; 
}
0 голосов
/ 28 января 2010

Вот тестовая база данных, которую я создал для вашей проблемы:

mysql> select  * from table_bookPrice;
+----+-------+--------+
| id | price | bookid |
+----+-------+--------+
|  1 |   150 |     61 |
|  2 |   100 |     72 |
|  3 |   300 |    100 |
|  4 |   200 |    102 |
+----+-------+--------+
4 rows in set (0.00 sec)

Вот код PHP:

<?php

$books=array(61,72,78,100,102);

// establish an assoc array of bookid => default_price
$prices=array();
foreach($books as $bookid){
    $prices["$bookid"]=500;
}

// build query to select all prices stored in database
$bookids=implode(', ',$books);
mysql_connect('localhost','aj','nothing') or die('unable to connect!');
mysql_select_db('books') or die('unable to select db!');
$stmt="SELECT bp.bookid, bp.price FROM table_bookPrice bp WHERE bp.bookid IN ($bookids)";
$res=mysql_query($stmt);
while( ($rec= mysql_fetch_assoc($res)) ){
    $idstr=(string)$rec['bookid'];
    $prices[$idstr]=$rec['price'];
}

print_r($prices);

?>

Это выводит:

Array
(
    [61] => 150
    [72] => 100
    [78] => 500
    [100] => 300
    [102] => 200
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...