变量没有通过?

时间:2008-11-27 12:43:39

标签: php javascript ajax

我有这段代码

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等

我无法理解为什么会这样。

4 个答案:

答案 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()会给你类似的信息,但格式很好。

祝你好运。