PHP / SQL,简单选择将“值”作为列

$account = "proot"; 

        $sql_check_account = mysqli_query($connect, "SELECT username FROM proot_accounts WHERE username = $account");

    if(!$sql_check_account)
            die(mysqli_error($connect));

Return :

Unknown column 'proot' in 'where clause'

Same with :

 $sql_check_account = mysqli_query($connect, 'SELECT username FROM proot_accounts WHERE username = "'.$account.'"');

Or

 $sql_check_account = mysqli_query($connect, "SELECT username FROM proot_accounts WHERE username =".$account);

What can make the variable $account perform as a column ? I don't get the problem here...

Thanks !

You need to put quotes around it.

mysqli_query($connect, "SELECT username FROM proot_accounts WHERE username = '$account'");

You should also explore prepared SQL statements in PHP. They will save a lot of these formatting headaches.

I think this is a quoting issue. This:

"SELECT username FROM proot_accounts WHERE username = $account"

will get you this string:

SELECT username FROM proot_accounts WHERE username = proot

In this case MySQL is thinking proot is a column name, because proot is not in quotes at all.

This:

'SELECT username FROM proot_accounts WHERE username = "'.$account.'"'

will get you this string:

SELECT username FROM proot_accounts WHERE username = "proot"

In this case, MySQL may still think "proot" is a column name, depending on the SQL mode. Since you are still getting the same error when you use this code, it looks like your database is set to ANSI_QUOTES mode. In this mode, text inside quotation marks will be interpreted as an column identifier, not a literal value.

Using this:

"SELECT username FROM proot_accounts WHERE username = '$account'"

will get you this string:

SELECT username FROM proot_accounts WHERE username = 'proot'

Using ' instead of " should ensure that MySQL will treat proot like a literal value instead of a column identifier regardless of the SQL mode.