2015-10-06 44 views
-1

我的代碼以獲取地區一個國家:如何使用MySQL

<?php   
$con = mysqli_connect('localhost','dbuser','password','dbname'); 
if (!$con) { 
die('Could not connect: ' . mysqli_error($con)); 
} 
$state = str_replace('-',' ',$_GET['state']); 
$bank = str_replace('-',' ',$_GET['bank']); 
$sql="SELECT * FROM table WHERE state='$state' AND bankName='$bank'"; 
$result = mysqli_query($con,$sql);  
$rowcount=mysqli_num_rows($result); 
if ($result->num_rows > 0) {      
// output data of each row 
while($row = $result->fetch_assoc()) { 
$bank = $row['bankName']; 
$district = $row['district']; 
$state = $row['state']; 
} 
} 
?> 

上面的代碼工作正常使用get價值和呼應銀行名稱和國家的名稱。 我一直在嘗試運行另一個mysql查詢來獲取特定銀行所選狀態的所有分區列表,例如,有一家名爲ABC的銀行在一個叫做德里的州中有多個分支,其中德里分爲8個區。所以我想拿ABC銀行的德里所有8區名單。 要做到這一點,我用下面的代碼:

<?php 
$sql="SELECT distinct bankName, state, district FROM table where bankName='$bank' group by state and district"; 

$result = mysqli_query($con,$sql);   
$rowcount=mysqli_num_rows($result); 
?> 
<section class="left"> 
<h1>District-wise list of <?php echo $bank; ?> Branches in <?php echo $state; ?></h1> 
<p>Branches of <?php echo $bank; ?> are available at <?php echo $rowcount; ?> <?php echo $districts; ?> districts of <?php echo $state; ?> in India</p> 
<?php 

echo "<ul class=\"states\">\n";   
if ($result->num_rows > 0) {      
// output data of each row 
while($row = $result->fetch_assoc()) {            
echo "<li><a href='/bank/".str_replace($remove, "-", $row['bankName'])."/state/".str_replace($remove, "-", $row['state'])."/district/".str_replace($remove, "-", $row['district'])."'>" . $row["district"]. "</a></li>\n"; 
} 
echo "</ul>"; 
} else { 
echo "<p>No results Found</p>"; 
} 
mysqli_close($con); 
?> 
</section> 

這將返回沒有找到結果。請幫助我這個查詢。

感謝

維卡斯

+0

您應該添加錯誤發出SQL語句的時候,看看是否有什麼差錯處理你的代碼,你的代碼只是假設一切總是罰款mysql的一部分。 – Shadow

+0

如果您運行SQL查詢在phpMyAdmin(或類似),它會給你任何結果嗎?任何錯誤? – Anders

+0

嗨,試過了,但它是返回所有州的所有地區,而不是德里是通過獲取值單選:( –

回答

0

這不會做你所期望的:

SELECT distinct bankName, state, district 
FROM table 
where bankName = '$bank' 
group by state and district 
---------------^ 

在許多數據庫中,這將導致一個錯誤,因爲statedistrict不是布爾表達式。這在MySQL中是允許的。基本上,它返回true或false,取決於字符串是否看起來像MySQL的「真」值或「假」值。 (我認爲MySQL將它們轉換爲數字,並將它們與0,因此,如果值開始用字母,結果永遠是假的,但是這是不重要的。)

您打算逗號:

SELECT distinct bankName, state, district 
FROM table 
where bankName = '$bank' 
group by state, district; 

但是,您根本不需要GROUP BYDISTINCT。因此,擺脫一方或另一方的:

SELECT distinct bankName, state, district 
FROM table 
where bankName = '$bank'; 

此外,你應該使用參數化查詢,而不是在查詢字符串值嵌入的習慣得到。

+0

嗨,我試了一下,但它返回了銀行分支機構可用的所有州的區域:( –

+0

@VikasKukreja ......這似乎是您查詢的目的。 –

0

我使用終於固定它: $sql="SELECT BANKNAME ,狀態,, count() as totcount FROM ifsccodes WHERE bankName='$bank' AND狀態LIKE '%$state%' group by district`「;」

謝謝大家對你的幫助:)