我制作了一个让人们互相关注的php文件

时间:2017-10-19 18:40:13

标签: php mysql

我创建了这个PHP页面,让人们互相关注它从表用户获取以下用户ID,当登录用户按下后,该操作应该保存在关注者表中。

followers table
    id  int
    user_id int
    follower-id int

users table
    email varchar
    id int
    username varchar
    password varchar

我收到此错误

  

:致命错误:带消息的未捕获异常'PDOException'   'SQLSTATE [42S22]:找不到列:1054未知列'追随者'   C:\ socialnetwork \ classes \ DB.php中的“字段列表”:12堆栈跟踪:#0   C:socialnetwork \ classes \ DB.php(12):PDOStatement-> execute(Array)#1   C:\用户\卡里姆\桌面\ socialnetwork \ profile.php(17):   DB :: query('SELECT follower ...',Array)#2 {main}引入   C:第12行的socialnetwork \ classes \ DB.php

感谢您的时间。

<?php
include('./classes/DB.php');
include('./classes/Login.php');
$username = "";

if (isset($_GET['username'])) {
        if (DB::query('SELECT username FROM users WHERE username=:username', array(':username'=>$_GET['username']))) {
                $username = DB::query('SELECT username FROM users WHERE username=:username', array(':username'=>$_GET['username']))[0]['username'];
                if (isset($_POST['follow'])) {



                        $userid = DB::query('SELECT id FROM users WHERE username=:username', array(':username'=>$_GET['username']))[0]['id'];
                        $followerid = Login::isLoggedIn();


                        if (!DB::query('SELECT follower-id FROM `followers` WHERE user_id=:user_id', array(':user_id'=>$userid))) {
                                DB::query('INSERT INTO followers VALUES (null, :user_id, :follower-id)', array(':user_id'=>$userid, ':follower-id'=>(int)$followerid));
                        } else {
                                echo 'Already following!';
                        }
                }
        } else {
                die('User not found!');
        }
}
?>

<h1><?php echo $username; ?>'s Profile</h1>
<form action="profile.php?username=<?php echo $username; ?>" method="post">
        <input type="submit" name="follow" value="Follow">
</form>

1 个答案:

答案 0 :(得分:1)

连字符,即使不被禁止,也可能导致列名称出现问题。

为了使其工作,你必须用反尾标记括起列的名称:

SELECT `follower-id` FROM

正如MySQL文档所证实的那样:

  

不带引号的标识符中允许的字符:

     

ASCII:[0-9,a-z,A-Z $ _](基本拉丁字母,数字0-9,美元,   下划线)

     

扩展:U + 0080 .. U + FFFF

     

带引号的标识符中允许的字符包括完整的Unicode   基本多语言平面(BMP),U + 0000除外:

     

ASCII:U + 0001 .. U + 007F

     

扩展:U + 0080 .. U + FFFF

短划线-的ASCII代码为45,位于&#34;带引号的标识符&#34; ASCII范围