Nasıl bu MySQL sorgudan PHP değişkenleri alabilirim?

6 Cevap php

PHP / MySQL kullanarak bir Varlık Veritabanı sorun üzerinde çalışıyorum.

Bu komut ben bir varlık kimliği benim varlıklarını aramak ve tüm ilgili alanları dönmek istiyorum.

Önce veritabanı varlık tablosunu sorgulamak ve varlığın türünü bulmak. Sonra tipine bağlı I 3 1 sorguları çalıştırın.

<?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;  
}

?>

Şimdiye kadar $ tipi içine asset.type almak mümkün duyuyorum. Nasıl değişkenlerin kalanını alma hakkında gitmek istiyorum ($ modeli laptop.model, $ notları ve benzeri için asset.notes)?

Teşekkür ederim.

6 Cevap

$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 />';
}

Eğer istediğiniz gibi sonra verileri kullanabilirsiniz ne olsun görmek için bu deneyin;

Ayrıca mysql_fetch_array, mysql_fetch_row veya mysql_fetch_object bakmak isteyebilirsiniz. Seçtiğiniz hangi ihtiyaçlarınıza en uygun.

Ne yaptığınızı çalışmaz:

$type = mysql_query("
SELECT asset.type
From asset
WHERE asset.id = 93120
")

Bu $ tipi, türü değil kendisi içine bir resultset koyar.

Bunu yaptıktan sonra, alanı getir, sonra bir satır getirme gerekir:

$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.
}

Ben böyle bir şey yapmak istersiniz sanırım:

$result = mysql_query($query);
$i = array();
while ($data = mysql_fetch_assoc($result)) {
 $i[] = $data;
}

Bu sorgu tüm verileri içeren $ ia boyutlu bir dizi yapacak ve aşağıdakileri yaparak kullanabilirsiniz

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

Sen http://php.net/manual/en/function.mysql-query.php bakmak olabilir.

A mysql_query sizin sorgu sonuçlarını içeren bir kaynak verir. Bu kaynak şu şekilde okunabilir:

$sql_result = mysql_query( [here your stuff] );
while ($row = mysql_fetch_assoc($sql_result)){
  echo $row['model']; // prints the model
}

Yani, sonuç döngü var ve her row hareket. row daha sonra tek alanları içeren bir ilişkisel dizidir.

Umarım bu yardımcı olur.

sadece bir tablo olmalı computers

böylece kod sadece olacaktır:

<?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
?>

Eğer iki katına kodunu görmek her zaman, y yanlış bir şey yaptığını biliyorum.