未知列';abcdefg';在';其中条款';23


Unknown column 'abcdefg' in 'where clause'23

好的,所以我的查询有一些问题。我也在努力学习MySQLi,所以可能会有一些错误。我有一个名为Authentication的表,其中有以下列

||id
||UserName
||Password

当运行查询时,我将用户名作为列名,因此它会给出未知列错误。我似乎看不出我的代码出了什么问题。感谢您的帮助。

 <?php
// Report all errors
error_reporting(E_ALL);
session_start(); // Start PHP
// Get info sent to server from login form.
$my_username = $_POST['username'];
$my_password = $_POST['password'];
// MD5 Encrypt the password.
$my_password_md5 = md5($my_password);
// Connect to DB
$db = new MySQLi('localhost', 'user', 'password!', 'database');
if ($db->connect_error) {
    $error = $db->connect_error;
}
//SQL query
$sql = <<<SQL
    SELECT UserName
    FROM `Authentication`
    WHERE `username` = $my_username HAVING `username` = $my_password_md5
SQL;
$result = $db->query($sql) or die($db->error.__LINE__);
if($result = $db->query($sql))
$rows=mysqli_fetch_assoc($result);
// Count how many rows match that information.
$count=mysqli_num_rows($result);
// Check if there are any matches.
if($count==1)
{// If so, register $my_username, $my_password and redirect to the index page.
ini_set("session.gc_maxlifetime", "18000"); 
session_cache_expire(18000);
$cache_expire = session_cache_expire();
$_SESSION['username'] = $my_username;
$_SESSION['id'] = $rows['id'];
header("location:http://somesitegoeshere.com");
}
// If not, redirect back to the index page and provide an error.
else {
header("location:http://somesitgoeshere.com?err=1");
}
?>
$sql = <<<SQL
    SELECT UserName
    FROM `Authentication`
    WHERE `username` = $my_username HAVING `username` = $my_password_md5
SQL;

你忘了引用$my_username。所以您的查询看起来像WHERE 'username' = abcdefg HAVING。。。

Mysql认为您正在尝试与一列进行比较,请将您的用户名用引号括起来。还要把你的密码放在引号里,这样它就不会认为你的密码是一列。

$sql = <<<SQL
    SELECT UserName
    FROM `Authentication`
    WHERE `username` = "$my_username" HAVING `username` = "$my_password_md5"
SQL;