2013-07-05 92 views
-1
<?php 
$hostname='localhost'; 
$user='root'; 
$password=''; 
$connect=mysqli_connect($hostname,$user,$password,'a_railway'); 

if(!$connect) 
{ 
    die('Could not connect'); 
    } 

$rs="central"; 
$rd="central"; 
$s="A"; 
$d="B"; 

$dist=call_dist($rs,$rd,$s,$d,$connect); 
echo $dist; 

function call_dist($rs,$rd,$s,$d,$connect) 
{ 
    $src_dist="SELECT Distance FROM $rs WHERE Station=$s "; 
    $dest_dist="SELECT Distance FROM $rs WHERE Station=$d "; 
    $src_dist=mysqli_query($connect,$src_dist); 
    $dest_dist=mysqli_query($connect,$dest_dist); 
    $dist=abs($src_dist-$dest_dist); 
    return $dist; 
} 
?> 

爲什麼我的Sql查詢不起作用?數據庫沒有問題。但查詢不會執行。我想找到這個程序中的距離,它是通過減去點A和B處的值找出的。MySQL選擇查詢不起作用。

+1

你的意思是「不工作」 ?怎麼了?嘗試檢查if($ src_dist === FALSE){die(mysqli_error()); }'。還要記住['mysqli_query'](http://php.net/manual/en/mysqli.query.php)會返回一個資源。您需要使用['mysqli_fetch_assoc'](http://www.php.net/manual/en/mysqli-result.fetch-assoc.php)獲取數據。 –

+0

您是否檢查過mysqli_query返回的內容?它給了你一個結果集,你不能以你想要的方式對結果集進行數學運算。 – andrewsi

+0

是@andrewsi。獲取錯誤 注意:類mysqli_result的對象不能轉換爲int在C:\ xampp \ htdocs \ check \ test.php上第30行 我該如何將它轉換爲int? –

回答

3

如果station是一個varchar,那麼您需要圍繞字符串引號。

$src_dist="SELECT Distance FROM $rs WHERE Station='$s' "; 

但是,你應該曾經在這樣的一個字符串插入值。請使用準備好的語句!

閱讀參考,它會使你的代碼和生活輕鬆了許多:http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

編輯您還可以在SQL的數學:

$dist_query = mysqli_query("SELECT ABS(s.Distance - d.Distance) as dist FROM 
       (SELECT Distance FROM $rs WHERE Station='$s') as s, 
       (SELECT Distance FROM $rs WHERE Station='$d') as d"); 
$dist_result = $dist_query->fetch_assoc(); 
return $dist_result[0]['dist']; 
+0

是的,我知道這是易受sql注入。我只是一個初學者,所以我會明確地嘗試下一次。 –

+0

我已經更新了一個可能更簡單的方法。 –

+0

是這是一個簡單的方法。但我沒有得到「as a」和「as d」做什麼? –