PHP函数不会回响

时间:2013-07-25 19:06:30

标签: php

我确信这是一个真正的新手问题。我知道代码有效,因为当我在没有函数的情况下测试它时它会返回行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();

5 个答案:

答案 0 :(得分: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);

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

答案 1 :(得分: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'];
}

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

答案 2 :(得分: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();

答案 3 :(得分: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');

答案 4 :(得分: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'];
    }

一般来说,这是一个很好的做法,假设如果某些事情可能会失败,那么最好包含能够处理错误的代码。