我有这段代码
while($row = mysql_fetch_row($result))
{
echo '<tr>';
$pk = $row[0]['ARTICLE_NO'];
foreach($row as $key => $value)
{
echo '<td><a href="#" onclick="GetAuctionData(\''.$pk.'\')">' . $value . '</a></td>';
}
获得pk。然后将pk传递给axjax部分:
function GetAuctionData(pk)
{
.....
var url="get_auction.php?"
url=url+"cmd=GetAuctionData&pk="+pk;
最后在一个单独的php文件中使用:
$pk = $_GET["pk"];
$sql="SELECT * FROM Auctions WHERE ARTICLE_NO ='$pk'";
第二个php文件在单独使用它并传递参数时工作正常。同样,任何地方都没有错误。问题似乎是传递或生成$ pk,因为输出文件中的链接导致$ pk增加2,例如4,6,8等
我无法理解为什么会这样。
答案 0 :(得分:5)
mysql_fetch_row link没有子数组。它会将第一个字段返回0,然后返回1,等等。
尝试
$pk = $row[0];
这可以很容易地与您的foreach一起使用
while($row = mysql_fetch_assoc($result))
$pk = $row['ARTICLE_NO'];
或者这会给你关联和编号的数组。
while($row = mysql_fetch_array($result, MYSQL_BOTH))
$pk = $row['ARTICLE_NO'];
编辑: 基于
$result = mysql_query("SELECT SELLER_ID, ACCESSSTARTS, ARTICLE_NAME FROM {$table}");
您必须包含要从中获取值的行。 ;)
$result = mysql_query("ARTICLE_NO, SELECT SELLER_ID, ACCESSSTARTS, ARTICLE_NAME FROM {$table}");
BTW:我很确定这个嵌套循环不会产生你想要的东西。您将获得每个article_no的3个链接。第一个使用seller_id作为文本,第二个文本是accessstarts,而具有相同href的最后一个链接将具有文本article_name。
也许是这样的?
while($row = mysql_fetch_assoc($result))
{
$pk = $row['ARTICLE_NO'];
echo '<td><a href="#" onclick="GetAuctionData(\''.$pk.'\')">' . $row['ARTICLE_NAME'] . '</a></td>';
}
答案 1 :(得分:1)
正如troelskn所说,看起来你对mysql_fetch_row的回归感到有些困惑。
mysql_fetch_row将返回$ article [0],$ article [1]等
还有:
mysql_fetch_assoc // return $article['ARTICLE_NO'], $article['otherfield'] etc
mysql_fetch_array // returns an array that is effectively the above two array_merge'd
mysql_fetch_object // returns a stdclass object, as if mysql_fetch_assoc had been passed to get_object_vars()
根据这一点,你需要重构一下......
答案 2 :(得分:0)
我认为这不符合您的期望:
$pk = $row[0]['ARTICLE_NO'];
尝试:
$pk = $row['ARTICLE_NO'];
答案 3 :(得分:-1)
此处的其他回复应该足以回答您的问题,但我只想添加一个额外的调试提示,以便在将来遇到类似问题时帮助您。
您只需打印有关您正在使用的变量的屏幕信息,即可进行一些非常基本的调试。 (PHP IDE通常会有更强大的调试功能,但对于类似这个问题的东西,这种方法会很好)
您的原始代码:
while($row = mysql_fetch_row($result))
{
echo '<tr>';
$pk = $row[0]['ARTICLE_NO'];
foreach($row as $key => $value)
{
echo '<td><a href="#" onclick="GetAuctionData(\''.$pk.'\')">' . $value . '</a></td>';
}
}
您注意到GetAuctionData函数未正确获取其变量。添加以下行:
$pk = $row[0]['ARTICLE_NO'];
var_dump($pk);
如果你在运行文件时查看输出,你可能会看到它说$ pk为null。嗯,那没用。让我们稍微改变一下:
$pk = $row[0]['ARTICLE_NO'];
var_dump($row);
你现在看到这样的事情:
array(2) {
[0]=> string(2) "12"
[1]=> string(7) "myValue"
}
啊哈!现在您可以确切地看到您正在使用的内容,您会看到首先要使用的代码是:
$pk = $row[0];
var_dump()
是你的朋友。如果你正在使用数组,print_r()
会给你类似的信息,但格式很好。