-2

我敢肯定这是一个真正的新手问题。我知道代码有效,因为当我在没有函数的情况下对其进行测试时,它会带回行 ID“75”。我把它粘在一个功能上,什么都没有带回来。任何人都可以建议吗?

function gameID(){
        $gameIDsql = mysql_query("SELECT id FROM game WHERE player1='$player1' ORDER BY id DESC LIMIT 1");
        $row = mysql_fetch_assoc($gameIDsql);
        echo $row['id'];
        }

gameID();
4

5 回答 5

2

您的函数中没有变量$player1。您需要更改函数以获取参数:

function gameID($player1){
        $gameIDsql = mysql_query("SELECT id FROM game WHERE player1='$player1' ORDER BY id DESC LIMIT 1");
        $row = mysql_fetch_assoc($gameIDsql);
        echo $row['id'];
        }

并将其称为:

gameID($player1);

您应该启用错误报告,然后您会收到一条错误消息,指出该变量未定义。

于 2013-07-25T19:10:04.897 回答
1

这是因为在您的函数内部,您没有定义$player1变量超出范围。您的函数应该看起来更像这样:

function gameID($player1){
    $gameIDsql = mysql_query("SELECT id FROM game WHERE player1='$player1' ORDER BY id DESC LIMIT 1");
    $row = mysql_fetch_assoc($gameIDsql);
    echo $row['id'];
}

这是您的代码的基本问题。其他问题包括:

于 2013-07-25T19:09:57.787 回答
0

$player1未在函数范围内定义,您需要将其作为该函数的参数发送,例如:

function gameID($player1){
        $gameIDsql = mysql_query("SELECT id FROM game WHERE player1='$player1' ORDER BY id DESC LIMIT 1");
        $row = mysql_fetch_assoc($gameIDsql);
        echo $row['id'];
        }

echo gameID();
于 2013-07-25T19:10:32.547 回答
0

您应该设置$player1值,将其作为参数传递,例如:

function gameID($player1){
    $gameIDsql = mysql_query("SELECT id FROM game'
        . ' WHERE player1='$player1' ORDER BY id DESC LIMIT 1");
    $row = mysql_fetch_assoc($gameIDsql);
    echo $row['id'];
}

gameID('davey');
于 2013-07-25T19:10:42.333 回答
0

您可以采取一些措施来解决此问题并防止其发生。Barmar 是对的,您需要将变量 $player1 传递给您的函数,否则它将超出范围。

最有可能发生的是您的查询返回错误但您没有捕获它,因此当您尝试回显 $row['id'] 时它只是空的。

在开发时我总是添加:error_reporting(E_ALL); ini_set("display_errors", "on");

到我的 php 文件的顶部以查看所有错误和警告。

更重要的是捕获错误,您可以执行以下操作来确保您的查询正常工作:

function gameID($player1){
    $gameIDsql = mysql_query("SELECT id FROM game WHERE player1='$player1' ORDER BY id DESC LIMIT 1");

if(!$gameIDsql)
throw new Exception=("Unable to get id for player: " . $player1 . " query returned an error: " . mysql_error());
    $row = mysql_fetch_assoc($gameIDsql);
    echo $row['id'];
    }

通常,您最好假设如果某些事情可能会失败,那么最好包含将处理错误的代码。

于 2013-07-25T19:21:09.653 回答