如何从这个MySQL查询中获取PHP变量?

如何从这个MySQL查询中获取PHP变量?,php,mysql,database,variables,Php,Mysql,Database,Variables,我正在使用PHP/MySQL处理一个资产数据库问题 在这个脚本中,我希望通过资产id搜索我的资产,并让它返回所有相关字段 首先,我查询数据库资产表并找到资产的类型。然后根据类型,我运行3个查询中的1个 <?php //make database connect mysql_connect("localhost", "asset_db", "asset_db") or die(mysql_error()); mysql_select_db("asset_db") or die(mysql_

我正在使用PHP/MySQL处理一个资产数据库问题

在这个脚本中,我希望通过资产id搜索我的资产,并让它返回所有相关字段

首先,我查询数据库资产表并找到资产的类型。然后根据类型,我运行3个查询中的1个

<?php

//make database connect
mysql_connect("localhost", "asset_db", "asset_db") or die(mysql_error());
mysql_select_db("asset_db") or die(mysql_error());

//get type of asset
$type = mysql_query("
SELECT asset.type
From asset
WHERE asset.id = 93120
")
or die(mysql_error());

switch ($type){
    case "Server":
        //do some stuff that involves a mysql query
        mysql_query("
        SELECT asset.id
        ,asset.company
        ,asset.location
        ,asset.purchase_date
        ,asset.purchase_order
        ,asset.value
        ,asset.type
        ,asset.notes
        ,server.manufacturer
        ,server.model
        ,server.serial_number
        ,server.esc
        ,server.user
        ,server.prev_user
        ,server.warranty
        FROM asset
        LEFT JOIN server
        ON server.id = asset.id
        WHERE asset.id = 93120
        ");
        break;
    case "Laptop":
        //do some stuff that involves a mysql query
        mysql_query("
        SELECT asset.id
        ,asset.company
        ,asset.location
        ,asset.purchase_date
        ,asset.purchase_order
        ,asset.value
        ,asset.type
        ,asset.notes
        ,laptop.manufacturer
        ,laptop.model
        ,laptop.serial_number
        ,laptop.esc
        ,laptop.user
        ,laptop.prev_user
        ,laptop.warranty
        FROM asset
        LEFT JOIN laptop
        ON laptop.id = asset.id
        WHERE asset.id = 93120
        ");
        break;  
    case "Desktop":
        //do some stuff that involves a mysql query
        mysql_query("
        SELECT asset.id
        ,asset.company
        ,asset.location
        ,asset.purchase_date
        ,asset.purchase_order
        ,asset.value
        ,asset.type
        ,asset.notes
        ,desktop.manufacturer
        ,desktop.model
        ,desktop.serial_number
        ,desktop.esc
        ,desktop.user
        ,desktop.prev_user
        ,desktop.warranty
        FROM asset
        LEFT JOIN desktop
        ON desktop.id = asset.id
        WHERE asset.id = 93120
        ");
        break;  
}

?>

到目前为止,我能够将asset.type转换为$type。我如何获取其余变量(laptop.model到$model、asset.notes到$notes等等)


谢谢。

您所做的将不起作用:

$type = mysql_query("
SELECT asset.type
From asset
WHERE asset.id = 93120
")
这会将结果集放入$type,而不是类型本身

完成此操作后,需要获取一行,然后获取字段:

$result = mysql_query("
SELECT asset.type
From asset
WHERE asset.id = 93120
")
if($row = mysql_fetch_object($result)){
  $type = $row->type;

  // NOW you have the type in $type. Do something similar with the rest of the queries.
}
请参阅:

您可以看看

mysql\u查询
返回包含查询结果的资源。可通过以下方式读取此资源:

$sql_result = mysql_query( [here your stuff] );
while ($row = mysql_fetch_assoc($sql_result)){
  echo $row['model']; // prints the model
}
因此,您必须循环遍历结果并遍历每一行<代码>行则是包含单个字段的关联数组

希望这能有所帮助。

$sql=“您的查询”;
$sql = "YOUR QUERY";
$res = mysql_query($sql);

while($row = mysql_fetch_assoc($res))
{
    echo 'Start Record<br />';
    echo $row['type'].'<br />';
    echo $row['company'].'<br />';
    echo $row['location'].'<br />';
    echo 'End Record<br /> <br />';
}
$res=mysql\u查询($sql); while($row=mysql\u fetch\u assoc($res)) { 回显“开始记录
”; echo$row['type'].
; echo$row['company']。
; echo$row['location']。
; 回音“结束记录

”; }
试试看你得到了什么,然后你可以随心所欲地使用数据


您可能还想查看
mysql\u-fetch\u数组
mysql\u-fetch\u行
mysql\u-fetch\u对象
。选择最适合您的需要。

我想您会想做这样的事情:

$result = mysql_query($query);
$i = array();
while ($data = mysql_fetch_assoc($result)) {
 $i[] = $data;
}
这将使$i成为一个包含所有查询数据的多维数组,您可以通过执行以下操作来使用它

foreach ($i as $key => $value) {
  echo $value['model'];
  echo $value['serial'];
  etc......
}

它必须只有一个表
计算机

所以你的代码应该是:

<?php
//make database connect
mysql_connect("localhost", "asset_db", "asset_db") or die(mysql_error());
mysql_select_db("asset_db") or die(mysql_error());

$sql = "SELECT a.id, a.company, a.location, a.purchase_date, a.purchase_order,
               a.value, a.type, a.notes, c.manufacturer, c.model, 
               c.serial_number, c.esc, c.user, c.prev_user, c.warranty
        FROM asset a
        LEFT JOIN computers c
        ON c.id = a.id
        WHERE a.id = 93120";
$res = mysql_query($sql) or trigger_error(mysql_error().$sql);
$data=array();
while($row = mysql_fetch_assoc($res)) $data[] = $row;
// now $data array contains all the rows returned
?>


每次你看到加倍的代码,你就知道你做错了。

这整段代码急需重写。尤其是数据库结构。它必须是一个带有
类型的表
字段建议-我是新手,所以只要试着理解基本知识,让事情顺利进行,我就可以做更多的修改。我确信我的脚本没有一个看起来与最佳编码实践类似。表名在结果集中不可见,因此laptop.model无效。echo$value['model']就足够了。我意识到服务器、台式机和笔记本电脑都有相同的变量。但我把它们放在不同的表格中,主要是为了练习,因为我很快就会添加一些资产,比如投影仪、网络设备、显示器等等…@CT,那是另一回事。已经讨论过很多次了。但无论如何,数据库规范化应该是首要任务。