2014-01-25 236 views
-5

我想從數據庫中獲取變量數據「$ b,$ d,$ f,$ h」,然後計算它。這裏是我的例子:如何從數據庫中檢索值?

<?php 
    $host="localhost"; 
    $username="root"; 
    $password="root"; 
    $db_name="cbrteh" 

    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB"); 

    $b= mysql_query("SELECT bobot FROM atribut where id= 1"); 
    ($row = mysql_fetch_assoc($b)); 
    $row["bobot"]; 
    $d= mysql_query("SELECT bobot FROM atribut where id= 2"); 
    ($row = mysql_fetch_assoc($d)); 
    $row["bobot"]; 
    $f= mysql_query("SELECT bobot FROM atribut where id= 3"); 
    ($row = mysql_fetch_assoc($f)); 
    $row["bobot"]; 
    $h= mysql_query("SELECT bobot FROM atribut where id= 4"); 
    ($row4 = mysql_fetch_assoc($h)); 
    $row["bobot"]; 
    $calc = $b+$d+$f+$h; 
    echo $calc; 
<? 

數據庫中的值是50,50,50,50,但結果是22.爲什麼?

+1

代碼和問題都是難以理解的混亂。縮進你的代碼,拼寫檢查你的文本,並描述你實際上想要完成的事情。 – geoffspear

+0

請格式化您的代碼... –

+1

您並未將值分配給您的變量 –

回答

1

每個查詢字符串下面的線是錯誤的

($row = mysql_fetch_assoc($b)); 
    $row["bobot"]; 

因爲你沒有把結果存儲anywhere.The正確的方式來獲得的值應該是:

if(count($res=mysql_fetch_assoc($b))>0)$_b=$res[0]['bobot']; 

(如果返回結果有至少一行,返回值爲$_b變量)

注意$b正在用於存儲查詢結果,而不是值你從中得到。

然後你總結這樣的結果: $calc = $_b+$_d+$_f+$_h;這就是全部。

+0

如果條件成立,您可以刪除'> 0',因爲非零結果無論如何都會轉換爲布爾值。另外,我將使用三元形式賦值'$ _b',以便即使沒有返回結果也會取值。 – halfer

0

看來你可以做所有的工作在你的數據庫:

$query = mysql_query(
    "SELECT SUM(bobot) AS summation FROM atribut where id IN (1,2,3,4)" 
); 
$row = mysql_fetch_assoc($query); 
$calc = $row['summation']; 

我已經刪除了分配周圍的不必要的括號$row,當然我已經更換了四個獨立的查找只有一個。由於我使用了分組功能SUM,因此我已將其別名爲summation,因此很容易從行中檢索。