繁体   English   中英

变量没有被传递?

[英]variable not being passed?

我有这个代码

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等

我不明白为什么会这样。

mysql_fetch_row 链接没有子数组。 它将返回第一个字段为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}");

顺便说一句:我很确定这个嵌套循环不会产生您想要的。 您将获得3条指向每个article_no的链接。 第一个以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>';
}

正如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()

鉴于此,您需要进行一些重构。

我认为这不符合您的期望:

$pk = $row[0]['ARTICLE_NO'];

尝试:

$pk = $row['ARTICLE_NO'];

此处的其他响应应该可以充分解决您的问题,但是我只是想添加一个额外的调试技巧,以在将来遇到类似问题时为您提供帮助。

您可以通过仅在屏幕上打印有关正在使用的变量的信息来进行一些非常基本的调试。 (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为空。 嗯,那没用。 让我们对其进行一些更改:

$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()会为您提供类似的信息,但格式要好。

祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM