我正在写一个网上商店,我遇到了一个功能问题,我希望有人可以帮助我。该功能旨在确定产品是否以其他格式存在,并链接到侧边栏中的产品。例如,DVD,Blu-Ray和Digital Download中可能存在产品。
这是我的功能代码:
function formatExists($format, $pid) {
global $conn; global $dbname; global $loginid;
mysql_select_db($dbname, $conn);
// Get author and description of the requested product
$query = "SELECT description, author FROM products WHERE productid = $pid";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
$author = $row['author'];
$description = $row['description'];
}
// Find other products with the same description & author in requested format
$query = "SELECT productid FROM products WHERE format = $format AND description = '$description' AND author = '$author'";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
$rpid = $row['productid'];
}
if($rpid) {
return $rpid;
} else {
return 0;
}
}
我在代码的另一部分写了一个循环,它从数据库中获取所有格式,然后在它们上运行上面的函数,试图找出产品可用的格式:
$query = "SELECT formatid, description, postage FROM formats";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
$id = $row['formatid'];
$desc = $row['description'];
$post = $row['postage'];
... STUFF ...
}
当'... STUFF ...'是'$ bodycontent。= $ id';“它回显了数据库中的每个格式ID,这是我期望的行为。但是,当我将其更改为:
$pid = formatExists($id, $productid);
if($pid) {
$query = "SELECT price FROM products WHERE productid = $pid";
$result = mysql_query($query);
$pricedata = mysql_fetch_array($result, MYSQL_ASSOC);
$pprice = $pricedata['price'];
$bodycontent .= "<span>";
if($pid != $productid) {
$bodycontent .= "<a href='$siteroot/index.php?page=product&id=$pid'>";
}
$bodycontent .= "$desc - $$pprice";
if($postage) {
$bodycontent .= " + P&P";
}
if($pid != $productid) {
$bodycontent .= "</a>";
}
$bodycontent .= "</span>";
}
它以所需的方式停止运行,并开始返回第一个格式ID的响应。
如果我手动将'formatExists($ id,$ productid)'更改为'formatExists(2,$ productid)'然后价格和链接更新,那么该功能正常运行。但是,出于某种原因,它并没有为每个类别运行一次,它只是在我的循环中运行一次。
非常感谢任何帮助。
答案 0 :(得分:-1)
你使用的功能是错误的!我的意思是 - &gt; mysql_fetch_array
您应该使用mysql_fetch_array
mysql_fetch_assoc
看到真实的结果。