如何在php中为web编程生成mysql变量(@variable)?

如何在php中为web编程生成mysql变量(@variable)?,php,mysql,Php,Mysql,我使用PHP for MySQL进行了以下查询: $query = "SELECT `username` FROM `usersdata` (select @user := van FROM `usersdata`) WHERE `username` = @user AND `password` = ? "; 但它给出了这样一个错误: 致命错误:对第14行的/Applications/XAMPP/xamppfiles/htdocs/healthyfoodsite/authentication.

我使用PHP for MySQL进行了以下查询:

$query = "SELECT `username` FROM `usersdata` (select @user := van FROM `usersdata`) WHERE `username` = @user AND `password` = ? ";
但它给出了这样一个错误:

致命错误:对第14行的/Applications/XAMPP/xamppfiles/htdocs/healthyfoodsite/authentication.php中的非对象调用成员函数
bind_param()

如何在PHP中为MySQL创建一个简单变量?我做错了什么?我需要在一个查询中完成所有操作

以下是我的全部代码:

require('db.php');
if(isset($_POST['submit'])){
    if(isset($_POST['username']) && isset($_POST['password'])){
        global $connection;

        $username = $_POST['username'];
        $password = $_POST['password'];

        $query = "SELECT `username` FROM `usersdata` (select @user := van FROM `usersdata`) WHERE `username` = @user AND `password` = ? ";

        $stmt = $connection->prepare($query);
        $stmt->bind_param("ss",$username,$password);
        $stmt->execute();
        $stmt->store_result();
        if($stmt->num_rows > 0){
            $stmt->bind_result($username);
            while($stmt->fetch()){
                echo $username;
            }
        }else{
            echo "nothing happen";
        }
    }else{
        header('location: ');
    }
}
?>

@VARS只是MySQL变量,而不是PHP变量和cant传输。重新运行MySQL变量值的唯一方法是*SELECT@USER;;**这将返回在phpsorry中使用mysql的var USERi的内容,我不理解您的查询。在prepared语句中向Mysql传递参数是使用?操作数,如从
usersdata
中选择
username
,其中
username
=?和密码=?“然后用$stmt->bind_param($ss),$username,$password)为这两个参数赋值;在php即prepare语句中,“?”标记将替换为$stmt->bind_param($s),$username)。每个?标记都将替换为bind_param。这是正确的。在您的示例中,您给出了字符串“ss”类型中的两个变量”他说。第一个标记将替换为$username的内容,第二个标记将替换为$password。