PHP/SQL,简单选择从何处获取;“价值”;列
返回: “where子句”中的未知列“proot” 同:PHP/SQL,简单选择从何处获取;“价值”;列,php,mysql,Php,Mysql,返回: “where子句”中的未知列“proot” 同: $account = "proot"; $sql_check_account = mysqli_query($connect, "SELECT username FROM proot_accounts WHERE username = $account"); if(!$sql_check_account) die(mysqli_error($connect)); 或 什么可以使变量$
$account = "proot";
$sql_check_account = mysqli_query($connect, "SELECT username FROM proot_accounts WHERE username = $account");
if(!$sql_check_account)
die(mysqli_error($connect));
或
什么可以使变量$account作为列执行?我不明白这里的问题
谢谢 你需要在它周围加上引号
$sql_check_account = mysqli_query($connect, "SELECT username FROM proot_accounts WHERE username =".$account);
您还应该探索PHP中准备好的SQL语句。它们将省去许多格式方面的麻烦。您需要在其周围加上引号
$sql_check_account = mysqli_query($connect, "SELECT username FROM proot_accounts WHERE username =".$account);
您还应该探索PHP中准备好的SQL语句。它们将省去很多格式方面的麻烦。我认为这是一个引用问题。这:
mysqli_query($connect, "SELECT username FROM proot_accounts WHERE username = '$account'");
将为您获取以下字符串:
从username=proot的proot\u帐户中选择username
在本例中,MySQL认为proot是一个列名,因为proot根本不在引号中
这:
将为您获取以下字符串:
从proot\u帐户中选择用户名,其中username=“proot”
在这种情况下,MySQL可能仍然认为“proot”是一个列名,这取决于SQL模式。由于在使用此代码时仍会遇到相同的错误,因此数据库似乎已设置为模式。在此模式下,引号内的文本将被解释为列标识符,而不是文字值
使用此选项:
'SELECT username FROM proot_accounts WHERE username = "'.$account.'"'
将为您获取以下字符串:
从proot_帐户中选择用户名,其中用户名='proot'
使用
“
而不是”
应确保MySQL将proot
视为文本值而不是列标识符,无论SQL模式如何。我认为这是一个引用问题。这是:
mysqli_query($connect, "SELECT username FROM proot_accounts WHERE username = '$account'");
将为您获取以下字符串:
从username=proot的proot\u帐户中选择username
在本例中,MySQL认为proot是一个列名,因为proot根本不在引号中
这:
将为您获取以下字符串:
从proot\u帐户中选择用户名,其中username=“proot”
在这种情况下,MySQL可能仍然认为“proot”是一个列名,这取决于SQL模式。因为在使用此代码时仍然会出现相同的错误,所以看起来您的数据库被设置为模式。在这种模式下,引号内的文本将被解释为列标识符,而不是文本值
使用此选项:
'SELECT username FROM proot_accounts WHERE username = "'.$account.'"'
将为您获取以下字符串:
从proot_帐户中选择用户名,其中用户名='proot'
使用
“
而不是”
应该确保MySQL将proot
视为一个文本值,而不是列标识符,而不管SQL模式如何。尝试将proot\u帐户包含在backticks中,即“`”您的第二个示例应该可以工作。您好,谢谢您的时间,同样的反勾号错误和第二个示例不起作用:(反勾号用于mysql列/表名。您正在尝试比较VARCHAR
值。请参阅下面的答案。您的$account
中是否有引号”
/“
?尝试将proot\u帐户包含在反勾号ie中”`“您的第二个示例应该可以运行。您好,谢谢您的时间,backticks和第二个示例的相同错误将不起作用:(backticks用于mysql列/表名。您正在尝试比较VARCHAR
值。请参阅下面的我的答案。您的$account
中是否有引号”
/“
?这与OPs第二个示例有何不同?之所以不同,是因为它生成了一个带有引号的SQL语句。您需要username=“value”
而不是username=value
您是否仍在“where子句”中获得未知列“proot”
?回显您正在生成的查询并共享结果。在那里:“where子句”中的未知列“proot”这不会创建与OPs不同的语句选择…where username=“.”account““
这与OPs第二个示例有何不同?之所以不同,是因为它生成了一个带有引号的SQL语句。您需要username=“value”
而不是username=value
您是否仍然在“where子句”中获得未知列“proot”
?回显您正在生成的查询并共享结果。在那里:“where子句”中的未知列“proot”这不会创建与OPs不同的语句选择…where username=“.$account.”