2015-10-06 45 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`“;”

谢谢大家对你的帮助:)