php代码工作错误

php代码工作错误,php,mysql,Php,Mysql,嗯,这里出了点问题。我键入数据库中存在的用户名和密码。在这种情况下,它应该echo这个字符串 需要激活 但它与此相呼应 你需要注册 init.php <?php //error_reporting(0); session_start(); require 'dbconnect.php';//this works okay so i wouldn't post this file code require 'users.php'; $errors

嗯,这里出了点问题。我键入数据库中存在的用户名和密码。在这种情况下,它应该
echo
这个字符串

需要激活

但它与此相呼应

你需要注册

init.php

<?php
    //error_reporting(0);
    session_start();

    require 'dbconnect.php';//this works okay so i wouldn't post this file code
    require 'users.php';

    $errors = array();
?>

您的SQL错误。您正在将静态字符串与值进行比较,而不是将列名进行比较:

    SELECT COUNT('user_id') FROM users WHERE 'username' = '$username' AND 'active' = 1
应该是

SELECT COUNT(user_id) FROM users WHERE username = '$username' AND active = 1
注意,我从列名中删除了'。使用反勾号也是有效的:

SELECT COUNT(`user_id`) FROM users WHERE `username` = '$username' AND `active` = 1

在查询中对表/字段名使用
将它们转换为字符串,并且它们不再被视为字段/表名。这就是为什么会有反勾号,用于转义碰巧是关键字的字段/表名。您唯一需要转义字段/表名的时间是如果它们是保留字

这意味着

SELECT COUNT('user_id')
             ^-      ^-
FROM `users`
WHERE 'username' = '$username' AND 'active' = 1");
      ^--      ^--                 ^-     ^-

这是完全错误的。您正在计算一个固定字符串,您正在将提供的用户名与值为
用户名
的字符串进行比较,对于
活动

您检查用户是否存在的查询可能是您的问题之一:

$query = mysql_query("SELECT COUNT('user_id') FROM `users` WHERE 'username' = '$username'");
在该查询中,您在列名上使用单引号。这将导致比较两个字符串,并且,除非您有一个名为
username
的用户名,否则它将始终返回
0
。用`字符转义列

$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'");
或者什么都不用

$query = mysql_query("SELECT COUNT(user_id) FROM `users` WHERE username = '$username'");

您是否记得在会话中注册用户名,以及在会话结束后获取用户名

$username = $_SESSION['username'];

请不要使用
mysql.*
函数来编写新代码。它们不再得到维护,社区已经开始。看到了吗?相反,你应该学习并使用或。如果你不能决定哪一个,我会帮你的。如果您选择PDO,。它说>无法查询:“字段列表”中的未知列“user_id”,但列user_id存在我检查了它。您可以运行
SHOW CREATE TABLE users
?weel,如果我理解正确,我键入了
echo mysql_query(“SHOW CREATE TABLE users”)内部函数
user_exists
现在它说资源id#6无法查询:未知列'user_id'在'field list'哦,该死的家伙,它是用sql写的,我只是重新编写了它,现在它工作得很好这里不能查询:未知列'user_id'在'field list'我只是用了你写的(
user_id
)。不过,我很高兴你重新启动后它能工作。谢谢!现在是apache crushes,我想我应该重新安装Denwer。再一次。哦,$username变量来自哪里?
$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'");
$query = mysql_query("SELECT COUNT(user_id) FROM `users` WHERE username = '$username'");
$username = $_SESSION['username'];