使用两个表按字母顺序对MySQL中的列表进行排序以获取输入数据

时间:2011-02-19 08:20:12

标签: php sql mysql arrays

我有以下PHP:

<?php
$con = mysql_connect("localhost","foo","bar");
if (!$con)
{
    die('Could not connect: ' . mysql_error());
}

mysql_select_db("zed", $con);
$getTagID = $_GET["id"];
//make a loop that outputs each coupon that has been tagged that

$alphaTagSQL = mysql_query("SELECT * FROM coupon_tags WHERE tagID = '$getTagID'");

$alphaTagSQLArr[] = mysql_fetch_array($alphaTagSQL);

foreach($alphaTagSQLArr as $mouse)
    {
        $nzed = $mouse["couponID"];
        $brah = mysql_query("SELECT * FROM coupons WHERE couponID = '$nzed'");
        $pen[] = mysql_fetch_row($brah);
    }

foreach($pen as $ruler)
    {
        echo $pen;
    }

?>

我要做的是从$_GET中选择tagID,然后将其与表couponID中与其匹配的所有coupon_tags匹配,然后将coupon_ID与表retailerName中的coupons匹配,其中couponID将匹配字段id。然后我只想按字母顺序列出它们。我遇到了一些问题 - 即我收到错误Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource

任何帮助?

2 个答案:

答案 0 :(得分:3)

尝试更改

$brah = mysql_query("SELECT * FROM coupons WHERE couponID = '$nzed'"); 

$brah = mysql_query("SELECT * FROM coupons WHERE couponID = '$nzed'") or die(mysql_error());

它将为您提供有关查询未成功原因的更多信息。

答案 1 :(得分:0)

如果您使用的是最新版本的MySQL,我建议您使用子选项替换该循环,例如

"SELECT retailerName FROM coupons WHERE couponID IN (SELECT id FROM coupon_tags WHERE tagID = '$getTagID')"

如果您在查询中添加更多内容,则可以让数据库完成工作,并且它比多个查询更有效。通常,只返回您感兴趣的列而不是所有列也是一个好主意。

除此之外,您可以尝试查看使用MySQL控制台的问题或更详细的PHP日志记录(如@Ikke建议的那样)