Php Mysql减少了查询数量

Php Mysql减少了查询数量,php,mysql,Php,Mysql,我在表1中有3列:book、key和value | book | key | value | ------------------------------ | 1 | author | a | | 1 | editor | b | | 1 | book | c | 而不是运行三个查询 $data = mysql_q

我在表1中有3列:book、key和value

| book |   key    |  value   |    
------------------------------             
|  1   |  author  |    a     |              
|  1   |  editor  |    b     |        
|  1   |  book    |    c     |      
而不是运行三个查询

$data = mysql_query("
      SELECT * FROM table1 WHERE book = '1' AND key = 'author'
             ")  or die(mysql_error());  

while($info = mysql_fetch_array( $data ))
  {
       $value1 = $info['value'];
  }
然后对编辑和书籍重复这个步骤

$value1$value2$value3插入到第页的不同位置


我可以用一个问题来解决这个问题吗

要创建$value数组,必须使用以下命令:

$value[] = $info['value'];
与此相反:

$value1 = $info['value'];
此外您可以使用以下代码:

$value[]["key"] = $info['key'];
$value[]["value"] = $info['value'];

例如,您可以使用
$value[0][“value”]

Yes调用第一行的值。如果没有“book=1”的其他条目,您只需查询

SELECT * FROM table1 WHERE book = '1'
如果有更多条目,则可以使用此查询:

SELECT * FROM table1 WHERE book = '1' AND key IN('author','editor','book')
然后创建一个关联数组:

while($info = mysqli_fetch_assoc( $data ))
  {
       $value[$info['key']] = $info['value'];
  }

...

echo "the book {$value['book']} was written by {$value['author']}";

如果要在单个记录中输入值,请尝试以下操作:

SELECT `t1`.`value` AS `value1`, `t2`.`value` AS `value2`, `t3`.`value` AS `value3`
FROM
    `table1` AS `t1` CROSS JOIN
    `table1` AS `t2` CROSS JOIN
    `table1` AS `t3`
WHERE
    (`t1`.`book` = 1) AND (`t1`.`key` = 'author')
    AND (`t2`.`book` = 1) AND (`t2`.`key` = 'editor')
    AND (`t3`.`book` = 1) AND (`t3`.`key` = 'book');

谢谢你的回答,那么我该如何调用每个值呢?