【问题标题】:Unknown column 'Username' in 'where clause''where 子句'中的未知列'用户名'
【发布时间】:2018-01-16 15:15:27
【问题描述】:
mysql_select_db($database_binary, $binary);
$query_account = sprintf("SELECT * FROM users WHERE Username = %s", GetSQLValueString($colname_account, "text"));
$account = mysql_query($query_account, $binary) or die(mysql_error());
$row_account = mysql_fetch_assoc($account);
$totalRows_account = mysql_num_rows($account);

$maxRows_trade = 20;
$pageNum_trade = 0;
if (isset($_GET['pageNum_trade'])) {
  $pageNum_trade = $_GET['pageNum_trade'];
}
$startRow_trade = $pageNum_trade * $maxRows_trade;

$colname_trade = "-1";
if (isset($_SESSION['MM_Username'])) {
  $colname_trade = $_SESSION['MM_Username'];
}
mysql_select_db($database_binary, $binary);
$query_trade = sprintf("SELECT * FROM asset WHERE Username = %s", GetSQLValueString($colname_trade, "text"));
$query_limit_trade = sprintf("%s LIMIT %d, %d", $query_trade, $startRow_trade, $maxRows_trade);
$trade = mysql_query($query_limit_trade, $binary) or die(mysql_error());
$row_trade = mysql_fetch_assoc($trade);

if (isset($_GET['totalRows_trade'])) {
  $totalRows_trade = $_GET['totalRows_trade'];
} else {
  $all_trade = mysql_query($query_trade);
  $totalRows_trade = mysql_num_rows($all_trade);
}
$totalPages_trade = ceil($totalRows_trade/$maxRows_trade)-1;

$maxRows_withdrawreq = 10;
$pageNum_withdrawreq = 0;
if (isset($_GET['pageNum_withdrawreq'])) {
  $pageNum_withdrawreq = $_GET['pageNum_withdrawreq'];
}
$startRow_withdrawreq = $pageNum_withdrawreq * $maxRows_withdrawreq;

$colname_withdrawreq = "-1";
if (isset($_SESSION['Username'])) {
  $colname_withdrawreq = $_SESSION['Username'];
}
mysql_select_db($database_binary, $binary);
$query_withdrawreq = sprintf("SELECT * FROM withdrawal WHERE Username = %s", GetSQLValueString($colname_withdrawreq, "text"));
$query_limit_withdrawreq = sprintf("%s LIMIT %d, %d", $query_withdrawreq, $startRow_withdrawreq, $maxRows_withdrawreq);
$withdrawreq = mysql_query($query_limit_withdrawreq, $binary) or die(mysql_error());
$row_withdrawreq = mysql_fetch_assoc($withdrawreq);

我收到一个错误:

“where 子句”中的未知列“用户名”

我该如何解决?

【问题讨论】:

  • 发布您的用户表架构
  • 资产和提款表的结构如何?
  • 警告:如果您只是学习 PHP,请不要学习过时的 mysql_query 接口。这很糟糕,已在 PHP 7 中删除。PDO is not hard to learn 之类的替代品和PHP The Right Way 之类的指南有助于解释最佳实践。确保确保您的用户参数为properly escaped,否则您将得到严重的SQL injection bugs
  • @ajovi4ever 请编辑您的问题以包含类似的代码块。将其印入 cmets 使其非常难以阅读。您还应该避免将 MyISAM 用于任何关键任务:它没有日志记录,它不支持事务,并且由于表锁而在大量写入活动下受到严重影响。
  • 请将表格结构移动到问题中,而不是在 cmets 中发布。

标签: php mysql


【解决方案1】:

资产和提款表没有名为“用户名”的列。所以将该列添加到这些表中或更改与这些表相关的sql语句中的WHERE条件。这些sql语句引用了WHERE子句中不存在的Username列:

SELECT * FROM **asset** WHERE **Username**

SELECT * FROM **withdrawal** WHERE **Username**

新的 CREATE 语句,包括用户名列:

    CREATE TABLE asset ( Asset varchar(100) NOT NULL, optiontype varchar(200) 
NOT NULL, 
    Invested varchar(200) NOT NULL, Username varchar(100) NOT NULL,
    Entry Rate varchar(200) NOT NULL, Rate varchar(200) NOT NULL, Entry Time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, Expiration Time varchar(200) NOT NULL, Status varchar(200) NOT NULL, Returns varchar(200) NOT NULL, Customer varchar(200) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=armscii8;

CREATE TABLE withdrawal ( id varchar(100) NOT NULL, Username varchar(100) NOT NULL,
Date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, Customer varchar(200) NOT NULL, Amount varchar(100) NOT NULL, currency varchar(100) NOT NULL, email varchar(100) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=armscii8; 

【讨论】:

  • 您能帮我更新资产和提款表架构吗?
  • OK 将添加到我的答案中
  • 根据用户表添加了带有用户名的 CREATE 语句。
  • 我已经包含了用户名列现在我得到 Column 'Asset' cannot be null 错误
  • 谢谢你真的帮助我解决了这个问题我现在知道为什么我会收到新的错误。再次感谢。
猜你喜欢
  • 2013-02-16
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 2021-09-19
  • 2020-06-28
  • 2021-07-02
  • 2019-08-14
相关资源
最近更新 更多