无法执行 SELECT Login_Name FROM memberdirectory WHERE Login_Name = saviobosco(1054)“where 子句”中的未知列“savio
Posted
技术标签:
【中文标题】无法执行 SELECT Login_Name FROM memberdirectory WHERE Login_Name = saviobosco(1054)“where 子句”中的未知列“saviobosco”[关闭]【英文标题】:Could not execute SELECT Login_Name FROM memberdirectory WHERE Login_Name = saviobosco (1054)Unknown column 'saviobosco' in 'where clause' [closed] 【发布时间】:2014-10-03 02:12:46 【问题描述】:$username = stripslashes($username);
// check if usernames exists
$sql = "SELECT Login_Name FROM memberdirectory WHERE Login_Name = $username";
if ($result = mysqli_query($pdo,$sql))
$row = mysqli_num_rows($result);
// if yes, fetch the encrypted password
【问题讨论】:
由于您使用的是mysqli
,因此您可以使用绑定参数来避免该(以及许多其他)问题。
警告 SQL Injection Attack 前方。使用准备好的语句。
我不赞成,因为我们不喜欢在没有介绍性段落的情况下将代码转储到问题中。请愿意写介绍,而不仅仅是“见标题”。说明您尝试解决的问题,以及网络上是否有任何类似的问题可能会有所帮助。
这也是1054 - Unknown column 'apa_calda' in 'where clause' 的副本(以及其他几个,请参阅相关边栏)。在这种情况下,您需要做的就是搜索“SELECT 无法执行未知列 MySQL”。
【参考方案1】:
您在字符串值周围缺少引号:
$sql = "SELECT Login_Name FROM memberdirectory WHERE Login_Name = '$username'";
【讨论】:
【参考方案2】:如果您使用的是 mysqli,为什么要限制自己手动清理输入? MysqlI 已经准备好语句来正确处理和格式化您的查询。
$Conn = new mysqli("host","user","pass","database");
$Query = $Conn->prepare("SELECT Login_Name FROM memberdirectory WHERE Login_name=?");
$Query->bind_param('s',$username);
$Query->execute();
$Query->fetch();
$Row_Number = $Query->num_rows;
$Query->close(); // close the connection. Always a benefit and can save you complications later down the line
然后验证:
if ($Row_Number > 0)
// Example only.
【讨论】:
【参考方案3】:$username = stripslashes($username);
$sql = "SELECT Login_Name FROM memberdirectory WHERE Login_Name =".$username;
if ($result = mysqli_query($pdo,$sql))
$row = mysqli_num_rows($result);
【讨论】:
这将给出相同的错误消息,$username
需要在 '...'
内。以上是关于无法执行 SELECT Login_Name FROM memberdirectory WHERE Login_Name = saviobosco(1054)“where 子句”中的未知列“savio的主要内容,如果未能解决你的问题,请参考以下文章