我确信这是一个真正的新手问题。我知道代码有效,因为当我在没有函数的情况下测试它时它会返回行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();
答案 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'];
}
这是您的代码的基本问题。其他问题包括:
mysql_*()
函数they are deprecated。答案 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'];
}
一般来说,这是一个很好的做法,假设如果某些事情可能会失败,那么最好包含能够处理错误的代码。