PHP 自定义函数从 mysql 数据库返回值


PHP custom function return value from mysql database

>我已经查看了我正在尝试执行的其他结果,它们都没有做我需要它们做的事情。我想做的是这样的:

myfunction(){
    require('./connect.php'); //connect to database
    $query = mysql_query("SELECT * FROM users WHERE username='$user'"); //user is defined outside the function but it works in my login function which i use the same way.
    $numrows = mysql_num_rows($query);
    if($numrows == 1){
        $row = mysql_fetch_assoc($query);
        $value = row['value'];
        mysql_close();
        return $value;
   } else {
       $errmsg = "connection failed.";
       $value = 0;
       return $value;
   }
}

在我的 php 文件中,我会在顶部做这样的事情。

$value = myfunction();

这行不通。最终,我要完成的是从数据库中获取一个值,并从另一个文件中的函数输出它。(这是我在StackOverflow上的第一篇文章,所以如果我需要更改这一点,请随时告诉我,我会)

您的代码有几个语法错误。检查这个,并阅读我的评论:

function myfunction() {
    //connect to database
    require('./connect.php');
    //user is defined outside the function but it works in my login function which i use the same way.
    $query = mysql_query("SELECT * FROM users WHERE username='" . mysql_real_escape_string($user) . "'");
    $numrows = mysql_num_rows($query);
    if ($numrows == 1) {
        $row = mysql_fetch_assoc($query); 
        return $row['value']; //Missing $ sign
        //No need to create $value if you just return with that.
        //mysql_close();
        //return $value;
    } else {
        //Where do you use this errmsg????
        $errmsg = "connection failed.";
        return 0;
        // These 2 lines are unnecessary.
        //$value = 0;
        //return $value;
    }
} //Missing function close

在我的示例中,我刚刚保留了 mysql 函数,但请不要使用它们,它们已被弃用。改用 mysqli 或 PDO。另外,通过转义变量来避免 sql 注入!

$row = mysql_fetch_assoc($query);
$value = row['value']; // <-------- you forgot the $

最有可能的是,提取结果的正确方法是,

$row[0]['value'];

注意:

请不要在新代码中使用mysql_*函数。它们不再维护并被正式弃用。看到红框了吗?请改为了解预准备语句,并使用 PDO 或 MySQLi - 本文将帮助您决定哪个语句。如果您选择PDO,这是一个很好的教程。

我想你在这里忘记了一个点。

require('./connect.php'); 

和一点功能改进

    myfunction(){
        require_once('../connect.php'); //connect to database
        $query = mysql_query("SELECT * FROM users WHERE username='".$user."'"); //user is defined outside the function but it works in my login function which i use the
        $numrows = mysql_num_rows($query);
        if($numrows == 1){
            $row = mysql_fetch_assoc($query);
            $value = $row['value'];
            mysql_close();
        }
        else{
            $errmsg = "connection failed.";
            $value = 0;
        }
        return $value;
    }