2015-04-01 36 views
0

请帮帮忙, $_GET方法不工作,同时通过URL

我得到了以下错误

警告传递字符串:mysql_fetch_array()预计参数1是资源,布尔给出。

当我通过URL $_GET访问ID它的工作原理。

同时,通过此方法传递字符串(例如:Bihar)时查询不起作用。

如何解决这个问题?

<?php 
    include('config.php'); 
    $qry = "SELECT districtName FROM pincode_data WHERE stateName =" . $_GET['st']; // here is the issue.. its not works for me. 
    // $qry = "SELECT districtName FROM pincode_data WHERE stateName =" . $_GET['id']; // This query works 
    // $qry = "SELECT districtName FROM pincode_data WHERE stateName = 'Bihar'"; // This query works 

    $result = mysql_query($qry); 

    while($row = mysql_fetch_array($result)) 
    { 
     echo "<li><a href='districtview.php?dist=".$row['districtName']."'> ".$row['districtName']."</a></li>"; 
    } 

    mysql_close(); 
?> 
+0

是什么'的var_dump($ _ GET)'返回来写?你确定'$ _GET ['st']'的值存在于你的数据库中。 – Daan 2015-04-01 06:28:46

+0

首先''_GET ['st']'退出你的数据库.. ??然后给你的HTML代码.. – 2015-04-01 06:30:09

+0

而不是$ qry =“SELECT分区名称FROM pincode_data WHERE stateName =”。 $ _GET [ 'ST'];试试$ qry =“SELECT districtName FROM pincode_data WHERE stateName = Bihar”;并检查Bihar是否存在于您的数据库中。如果它有效,那么只有问题在你得到 – 2015-04-01 06:30:20

回答

0

我猜stateNamechar类型,所以你必须做出一个qoutes arraound YOUT值;

$qry = "SELECT districtName FROM pincode_data WHERE stateName ='" . $_GET['st']."'"; 

如果你不这样做,你会得到一个语法错误在MySQL中,这就是为什么你在PHP中出现错误。

查询:

$qry = "SELECT districtName FROM pincode_data WHERE stateName =" . $_GET['id']; 

作品,因为ID是一个数值列,没有必要对单引号。

但是,您不应该使用已弃用的mysql_* API。使用mysqli_*PDO与准备好的语句。

+0

然后为什么这样执行像OP提到的:'WHERE stateName =“。$ _GET ['id'];'? – Daan 2015-04-01 06:32:23

+0

因为ID是整数或数字,不需要引号 – Ceeee 2015-04-01 06:33:16

+1

@Ceeee我们在这里讨论'stateName'这个列! – Daan 2015-04-01 06:33:54

0
<?php 
    include('config.php'); 
    $qry = "SELECT `districtName` FROM `pincode_data` WHERE 
    `stateName` ='".$_GET['st']."'"; 
    $result = mysql_query($qry) or die(mysql_error()); 
    while($row = mysql_fetch_array($result)) 
    {?> 
    <li><a href="districtview.php?dist=<?php echo $row['districtName']?>"><?php echo $row['districtName']?></a></li> 
    <?php 
     } 
    mysql_close(); 
    ?> 
0

使用查询

$qry = "SELECT districtName FROM pincode_data WHERE stateName ='" . $_GET['st']."'"; 

因为$ _GET [ 'ST']是字符串,需要在双quottes

+1

-1,首先'$ _GET'不是一个字符串,'$ _GET'是一个超全局的。其次为什么这个工作像OP提到的那样:'WHERE stateName =“。$ _GET ['id'];'? – Daan 2015-04-01 06:35:02

+0

upvoted因为$ _GET ['st']是一个字符串,答案是非常正确的 – Ceeee 2015-04-01 06:45:07

+0

只是为了澄清大安并没有错! OP发布错误信息:http://stackoverflow.com/revisions/29384287/1但它得到纠正! (@Ceeee) – Rizier123 2015-04-01 11:20:32

相关问题