从循环创建url - 变量语法

时间:2018-05-16 15:16:55

标签: php sql

大家好我想尝试从循环SQL语句创建一个url,其中计数大于70.

// SQL QUERY TO GET CATEGORY COUNT
$sql2 = "SELECT COUNT(domains.domain) c, domains.category_id, 
         categories.category_description
         FROM categories INNER JOIN domains ON categories.category_id = 
         domains.category_id
         GROUP BY categories.category_id
         ORDER BY c DESC";

$results = mysqli_query($con, $sql2);           
if (!$results){     
    //Output error message if query execution failed
    die("Database access failed: " . mysqli_error()); 
} 

$rows = mysqli_num_rows($results);

// START PRINTING
print '<div class="readableTable">';

if ($rows) {     

    //START LOOP
    while ($row = mysqli_fetch_array($results)) {

        if ($row["c"] > 70){

            $theId = $row["category_id"];  // DIDN'T WORK!

            // URL CAUSING ISSUE 
            <a href="category_25.php?category_id=$row["category_id"]">

            // print '<div class="readable">'.$row["c"].'</div>';
            print '<div class="readable">'
                   .$row["category_description"]
                   .'('.$row["c"]
                   .')</a></div>';

        }
    }
}

所以你可以看到我正在尝试根据类别ID创建网址。

但我无法提取正确的category_id以放入网址。

有人可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

这可能不是唯一的问题,但有一个问题是您要打印的字符串引用的是'而不是",因此$row["category_id"]不会是{{3} }}

print '<div class="readable">

// URL CAUSING ISSUE 
<a href="category_25.php?category_id=$row["category_id"]">

'.$row["category_description"].
'('.$row["c"].
')</a>
</div>';

如果要在字符串中使用该变量,则需要使用"引用主字符串,并且不应引用数组键。如果您将外部引号更改为",则字符串中的任何引号都需要转义或更改为'(使用'引用HTML属性值通常很好)。

print "<div class=\"readable\">

// URL CAUSING ISSUE 
<a href=\"category_25.php?category_id=$row[category_id]\">

".$row["category_description"].
'('.$row["c"].
')</a>
</div>';

或者,您可以像使用其他变量一样连接$row['category_id']。我建议选择变量插值或连接,并将其用于所有您在此字符串中使用的变量。以一致的方式构建字符串将使您的代码更具可读性。

例如,切换到所有变量插值:

print "<div class='readable'>
    <a href='category_25.php?category_id=$row[category_id]'>
       $row[category_description] ($row[c])
    </a>
</div>";