传递内部链接变量仅适用于多字变量中的第一个单词,为什么?

I have this code below. As you can see I am passing two variables along with the link. The second variabye (category) works whenever it consists of one word, but some categories are two words or more, and then on the receiving php page where I fetch the variable only the first word is fetched.

Example: I pass along this: Rims & Tires Only this comes through: Rims

$display_table .= "<a href='../ad.php?ad_id=$row[ad_id]&category=$row[category]' target='_parent'>";

Here is how I fetch it in the receiving php file (which the link is to):

$cat = $_GET['category'];
echo $cat; //displays only first word of multiple word categories.

You need to use the proper encoding. For query data use urlencode:

"<a href='../ad.php?ad_id=".urlencode($row['ad_id'])."&category=".urlencode($row['category'])."' target='_parent'>"

And since the & inside the attribute value also need to be encoded properly (using htmlspecialchars):

"<a href='".htmlspecialchars("../ad.php?ad_id=".urlencode($row['ad_id'])."&category=".urlencode($row['category']))."' target='_parent'>"

Producing proper code makes things a lot more difficult and when using the variant above probably also a lot more unreadable. But you can split the steps like this:

$row['ad_id'] = urlencode($row['ad_id']);
$row['category'] = urlencode($row['category']);
$href = htmlspecialchars("../ad.php?ad_id=$row[ad_id]&category=$row[category]");
$display_table .= "<a href='$href' target='_parent'>";

And if ad_id is always a numeric value, you don’t even need to apply urlencode on it.

This should do it:

$display_table .= "<a href='../ad.php?ad_id=".urlencode($row[ad_id])."&category=".urlencode($row[category])."' target='_parent'>";