我用php制作了一个登录页面。当我使用用户名和密码作为数字时,没有问题。但是如果我使用一个字母作为用户名和密码,这将导致一个问题,并给出以下错误:
"Where Clause"中的未知列"column Name"
如有任何帮助,将不胜感激
更新:
我使用dreamweaver,并通过以下步骤制作登录页面:
插入->数据对象->用户身份验证->登录用户
更新2:
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
session_start();
}
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
}
if (isset($_POST['user'])) {
$loginUsername=$_POST['user'];
$password=$_POST['pass'];
$MM_fldUserAuthorization = "";
$MM_redirectLoginSuccess = "ok.php";
$MM_redirectLoginFailed = "login.php";
$MM_redirecttoReferrer = false;
mysql_select_db($database_cn3, $cn3);
$LoginRS__query=sprintf("SELECT * FROM users WHERE `user`=%s AND pass=%s",
GetSQLValueString($loginUsername, "-1"), GetSQLValueString($password, "text"));
$LoginRS = mysql_query($LoginRS__query, $cn3) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = "";
if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
//declare two session variables and assign them
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup;
if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: " . $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>
听起来似乎需要将变量封装在查询本身的引号中:
$var=3;
$sql="select someColumn from someTableName where userID=$var";
将工作,但
$var=bobby;
$sql="select someColumn from someTableName where userID=$var";
不会起作用。它需要:
$var=3;
$sql="select someColumn from someTableName where userID='$var'";
不过,请注意,如果您的SQL查询有问题,请发布它和相关的PHP代码,否则我们将被迫猜测发生了什么。在这种情况下,问题的第一部分数字好似乎暗示变量周围有引号,而未知列名部分暗示您有拼写错误。
检查您的mysql语句,确保数据库名称、表名称和列名拼写正确。
我确信,正如错误所说,您数据库表的column name
拼写错误。检查一下。但要确认它,请向我们展示sql语句。
尝试;
$LoginRS__query="SELECT * FROM users WHERE user = '$loginUsername' AND pass = '$password'";
$LoginRS = mysql_query($LoginRS__query) or die(mysql_error());